1.优化构建速度。如果项目很庞大的时候,构建的耗时会变得很长,每次等待构建的耗时加起来是个很大的数目 2.优化使用体验。通过自动化完成一些重复的工作,让我们更急专注解决问题本身
1.减少首屏加载的时间(白屏和首屏的计算) 2.提升流畅度,也就是代码的性能
(1)根据导入的语句寻找导入的文件 (2)根据导入的文件使用loader去处理文件
优化loader配置(test, include, exclude) eg: module: { rules:{ test: /.js$/, use: [‘babel-loader?cacheDirectory’], include: path.resolve(__dirname, ‘src’) } } 注意: babel-loader 支持缓存转换出的结果,通过cacheDirectory开启 我们可以适当调整项目的目录结构,以便在配置loader时通过include缩小命中的范围
resolve: { module: [path.resolve(__dirname, ‘node_module’)] }
resolve: { module: [path.resolve(__dirname, ‘node_module’)], mainField: [‘main’] },
resolve: { module: [path.resolve(__dirname, ‘node_module’)], mainField: [‘main’], alias: { ‘react’: path.resolve(__dirname, ‘./node_modules/react/dist/react.min.js’) } }, 注意: 但是这样会影响Tree-Shaking去除无效代码的优化,之后再讲
resolve: { module: [path.resolve(__dirname, ‘node_module’)], mainField: [‘main’], alias: { ‘react’: path.resolve(__dirname, ‘./node_modules/react/dist/react.min.js’) }, extensions: [‘js’] } 注意: 1. 尝试列表尽可能小,不要将不存在的写在列表里 2.频率出现最高的文件后缀要优先放在最前面 3.在项目中写导入语句尽可能带上后缀名,避免寻找过程
resolve: { module: [path.resolve(__dirname, ‘node_module’)], mainField: [‘main’], alias: { ‘react’: path.resolve(__dirname, ‘./node_modules/react/dist/react.min.js’) }, extensions: [‘js’], noParse: [/react.min.js$/] }
