官网链接:https://webpack.js.org/concepts/

这一章节讲述了 Webpack 的必须知道的核心概念

  • Entry
  • Output
  • Loaders
  • Plugins
  • Mode

一、Entry

entry 属性用于定义 Webpack 进行打包入口的地方,默认 ./src/index.js,我们也可以自定义地址

  1. module.exports = {
  2. entry: './path/to/my/entry/file.js',
  3. };

二、Output

output 属性用于确定如何输出打包文件,它有两个属性

  1. path:用于定义 Webpack 生成捆绑包的地址,默认 ./dist/main.js
  2. filename:定义这些捆绑包的名字 ```javascript const path = require(‘path’);

module.exports = { entry: ‘./path/to/my/entry/file.js’, output: { path: path.resolve(__dirname, ‘dist’), filename: ‘my-first-webpack.bundle.js’, }, };

  1. <a name="jLxX2"></a>
  2. ## 三、Loaders
  3. Webpack 默认只支持 JS 和 JSON 类型的文件打包,通过 loader 可以将其他类型的文件打包成有效的模块,并运行在应用中,它有两个属性
  4. - test:定义哪些文件进行转换
  5. - use:定义使用哪个 loader 对文件进行转换
  6. (Loaders 的定义位置在 `module.rules`,这个位置需要注意一下,容易错)
  7. ```javascript
  8. const path = require('path');
  9. module.exports = {
  10. output: {
  11. filename: 'my-first-webpack.bundle.js',
  12. },
  13. module: {
  14. rules: [{ test: /\.txt$/, use: 'raw-loader' }],
  15. },
  16. };

四、Plugins

与 loaders 打包文件不同,plugins 用于执行范围更广的任务,比如捆绑包优化、静态资源管理、环境变量注入等。同一个 plugin 可以因为不同的目的使用多次,使用方式如下,在 plugins 数组中,使用 new 操作符创建一个实例。

  1. const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
  2. const webpack = require('webpack'); //to access built-in plugins
  3. module.exports = {
  4. module: {
  5. rules: [{ test: /\.txt$/, use: 'raw-loader' }],
  6. },
  7. plugins: [new HtmlWebpackPlugin({ template: './src/index.html' })],
  8. };

五、Mode

mode 属性可以让 Webpack 对应不同环境做不同的优化。可以设置为 production、development 或 none。默认是 production。

  1. module.exports = {
  2. mode: 'production',
  3. };

六、Browser Compatibility

Webpack 默认支持所有符合 ES5 标准的浏览器
对于 import()require.ensure(),需要用到 Promise
如果想支持更老的浏览器,需要加载一个 polyfill

七、Environment

Webpack5 需要运行在 10.13.0+ 版本的 Node.js。

「@浪里淘沙的小法师」