美文网首页
webpack介绍

webpack介绍

作者: 涧草蘼芜 | 来源:发表于2018-10-07 22:03 被阅读0次

    webpack是一个优秀的静态模块打包工具,它可以递归地构建出依赖关系,将所有模块打包成一个或多个bundle。

    webpack

    1. 安装

    要使用webpack需要安装:

    npm install --save-dev webpack
    

    如果使用4.+版本还需要安装:

    npm install --save-dev webpack-cli
    

    建议本地安装,本地安装完成后直接使用node_modules/.bin/webpack访问webpack程序。

    2. 配置

    webpack的配置使用js编写,默认名字为webpack.config.js。一个简单的配置如下:

    var path = require('path');
    
    module.exports = {
      mode: 'development',
      entry: './foo.js',
      output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'foo.bundle.js'
      }
    };
    

    任何一个配置文件必需的两个字段包括:

    • 入口(entry),即webpack根据这个入口建立依赖关系;
    • 输出(output),处理后的bundle。
      模式(mode)告诉webpack如何优化。目前可以选择的有developmentproduction,该参数也可以通过命令行传递:webpack --mode=production。开发和生产模式,webpack会对代码做不同的优化策略。

    以上是一个单入口的例子,也可以写成:

    entry: {
      main: './path/to/my/entry/file.js'
    }
    

    webpack也支持多入口方式:

    entry: {
      app: './src/app.js',
      vendors: './src/vendors.js'
    },
    output: {
      filename: '[name].js',
      path: __dirname + '/dist'
    }
    

    3. loader处理非js文件

    webpack本身只能处理javascript文件,其他文件需要借助loader来处理,loader可以将其他类型文件转换为webpack能处理的模块。loader有两个字段test、use,test表示匹配哪些文件做转换,use表示使用哪个loader:

    const path = require('path');
    
    module.exports = {
      ...
      module: {
        rules: [
          { test: /\.txt$/, use: 'raw-loader' }
        ]
      }
    };
    

    例如,我们可以使用css-loaderstyle-loaderts-loader处理css和typescript文件:

    npm install --save-dev css-loader style-loader ts-loader
    
    module.exports = {
      module: {
        rules: [
          { test: /\.css$/, use: ['css-loader', 'style-loader'] },
          { test: /\.ts$/, use: 'ts-loader' }
        ]
      }
    };
    

    4. 插件

    插件对于webpack很重要,webpack本身也是构建在插件上的。我们可以使用插件完成很多工作。

    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
    ...
    plugins: [
            new HtmlWebpackPlugin({
                title: 'test',
                filename: 'index.html',
                template: path.resolve(__dirname, 'src/index.html'),
                inject: 'body'
            }),
        ],
    ...
    }
    

    要使用一个插件,在webpack中new一个实例并传入参数即可。如上所示,使用html-webpack-plugin插件。

    相关文章

      网友评论

          本文标题:webpack介绍

          本文链接:https://www.haomeiwen.com/subject/omsraftx.html