0%

缩小构建目标

缩小构建目标

  • 目的:尽可能的少构建模块

  • 比如 exclude 不解析相应的模块,目录。include 只解析解析相应的模块,目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    module: {
    rules: [
    {
    test: /\.js$/,
    //?cacheDirectory=true 开启缓存
    use: 'babel-loader?cacheDirectory=true',//使用babel-loader解析ES6
    exclude: 'node_modules',
    include: 'src'
    }
    ]
    }

resolve

resolve配置,设置模块如何被解析。通过resolve的配置,可以帮助Webpack快速查找依赖,也可以替换对应的依赖。了解更多

  • 1
    2
    3
    4
    5

    ```json
    resolve: {
    extensions: [".js",".jsx",".json",".css"]
    },
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    - 每当引入bootstrap模块的时候,它会直接引入bootstrap,而不需要从node_modules文件夹中按模块的查找规则查找

    ```javascript
    const bootstrap = path.resolve(__dirname, 'node_modules/_bootstrap@3.3.7@bootstrap/dist/css/bootstrap.css');
    resolve: {
    alias: {
    "bootstrap": bootstrap
    }
    },
  • resolve.modules:告诉 webpack 解析模块时应该搜索的目录

  • resolve.mainFields:当从 npm 包中导入模块时(例如,import * as D3 from ‘d3’),此选项将决定在 package.json 中使用哪个字段导入模块。根据 webpack 配置中指定的 target 不同,默认值也会有所不同

  • resolve.mainFiles:解析目录时要使用的文件名,默认是index

减少文件搜索范围

  • 优化 resolve.modules 配置(减少模块搜索层级)

  • 优化 resolve.mainFields 配置(优化入口文件分析,搜索过程)

  • 优化 resolve.extensions 配置(缩小扩展名查找范围)

  • 合理使用 alias

    1
    2
    3
    4
    5
    6
    7
    8
    resolve: {
    alias: {
    'react': path.resolve(__dirname, './node_modules/react/umd/react.production.min.js'),
    'react-dom': path.resolve(__dirname, './node_modules/react-dom/umd/react-dom.production.min.js'),
    },
    extensions: ['.js'],
    mainFields: ['main']
    },

参考

-------------本文结束感谢您的阅读-------------