loaders、plugins、mode

142 阅读1分钟

一、Loaders

webpack默认是只支持JS和JSON两种格式的数据,对于其他类型的数据,webpack不能解析,loaders的作用就是将这些代码解析成webpack能识别的代码,并添加到依赖图中。

Loaders本身是一个函数,参数是源文件,输出解析之后的文件。

基础配置如下:

const path = require("path");
module.exports = {  
     mode: "development",  
     entry: "./src/index.js",  
     output: {    
        path: path.join(__dirname, "dist"),    
        filename: "bundle.js", 
     },  
     module: {    
        rules: [      
         {        
             test: /\.less$/,        
             use: ["style-loader", "css-loader", "less-loader"],
         },
       ], 
   },
};
  • rules为一个数组,所以可以写多个文件的解析规则。

  • 这里解析less文件,use中的less-loader是将less代码解析成css代码,css-loader解析css,style-loader是将解析后的css代码以style标签的形式插入到head中。

二、Plugins

loaders是用来处理webpack不能处理的文件的,plugins是用于增强webpack的,它的作用有文件优化、资源管理、环境变量注入等。

它作用于整个构建过程。

基础配置如下:

const path = require("path");const HtmlWebpacPlugins = reques("html-webpack-plugin");module.exports = {  mode: "development",  entry: "./src/index.js",  output: {    path: path.join(__dirname, "dist"),    filename: "bundle.js",  },  module: {    rule: [      {        test: /\.less$/,        use: ["style-loader", "css-loader", "less-loader"],      },    ],  },  plugins: [new HtmlWebpacPlugin({ template: "./src/index.html" })],};

只需要实例化一个plugin,并放入plugins数组就可以了。

常用的plugin有:

  • CommonsChunkPlugin:将chunks相同的模块代码提取成公共js。

  • CleanWebpackPlugin:清理构建目录。

  • ExtractTextWebpackPlugin:将css提取成一个单独的文件。同mini-css-extract-plugin作用一样。

  • CopyWebpackPlugin:将文件或者文件夹拷贝到输出文件夹下。

  • HtmlWebpackPlugin:创建Html文件去承载输出的bundle.js。

  • UglifyjsWebpackPlugin:压缩js。

  • ZipWebpackPlugin:将打包出的资源生成一个zip包。

三、mode

mode是用来指定当前的构建环境的,参数有:production、development、none。

如果设置为production,那么会开启webpack的一个生产环境的内置函数,优化代码。

如果是none,就不做任何的优化。