使用webpack进行打包

使用webpack进行打包

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换。

  1. 如果想在项目中使用sass,就需要安装相应的loader(node-sass,sass-loader)。由于墙的原因,建议使用cnpm 进行安装。

  2. 如果想在项目中使用postcss,就需要安装postcss-loader,并且根据配置安装相应的插件,如postcss-import,postcss-cssnext。

  3. 如果想在项目中使用ES6语法,就需要安装babel-loader,一般还需安装babel-core,并根据.babelrc文件安装其他的依赖。

  4. 如果想在项目中使用jQuery,不能直接引入,而是需要一些额外的配置。

vendor.js

import $ from 'jquery'
window.$ = $
window.jQuery = $
export default $

之后在主js文件中引入vendor.js后,就可以正常引入其他jQuery插件。

import $ from 'vendor.js'
import 'jquery-ui'

webpack的配置文件大致如下所示:

var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');

module.exports = {
  // configuration
  entry: {
    app: './src/js/index.js',
    vendors: ['jquery']
  }, //代表入口(总)文件,可以写多个
  output: {
    path: path.resolve(__dirname, "build/js/"), //输出文件夹
    filename: "[name].[chunkHash:5].js"  //最终打包生成的文件名
  },
  module: {
    rules:  [{
      test: /\.scss$/,
      use: ExtractTextPlugin.extract({
        fallback: 'style-loader',
        //resolve-url-loader may be chained before sass-loader if necessary
        use: [{ loader: 'css-loader' , options: { importLoaders: 1 } },
            'postcss-loader', 'sass-loader']
      })
    },{
        test: /\.css$/,
        use: ExtractTextPlugin.extract({
          fallback: 'style-loader',
          use: [
            { loader: 'css-loader' , options: { importLoaders: 1 } },
            'postcss-loader'
          ]
        })
    }, {
      test: /\.js|jsx$/, //是一个正则,代表js或者jsx后缀的文件要使用下面的loader
      loader: "babel-loader",
      exclude:/node_modules/
    },{
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: 'img/[name].[hash:7].[ext]'
        }
    },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: 'fonts/[name].[hash:7].[ext]'
        }
    }]
  },
  plugins: [
    new ExtractTextPlugin('../css/my.css'),
    new HtmlWebpackPlugin({
      filename: path.join(__dirname,'./build/index.html'),
      template: path.join(__dirname,'./src/index.html'),
      chunks: ['app', 'vendors']
    }),
    new webpack.LoaderOptionsPlugin({
         compress: {
            properties: false,
            warnings: false
        },
        output: {
            beautify: true,
            quote_keys: true
        },
        mangle: {
            screw_ie8: false
        },
        sourceMap: false
   }),
    new webpack.optimize.CommonsChunkPlugin({
      name: 'vendors',
      filename: 'vendors.js'
    })
  ]
};

具体的配置项可以参考本人的github上面的配置:
webpack_config

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值