应用 noParse
module.noParse 设备哪些文件可以离开webpack的解析。
有些库是自成一体不依附其他库的没有应用模块化的,比如jquey、momentjs、chart.js,要应用它们必须整体全部惹人。
webpack是模块化打包对象完全没有须要去解析这些文件的依附,因为它们都不依附其它文件体积也很宏大年夜,要忽视它们设备如下:
- module.exports = {
- module: {
- noParse: /node_modules\/(jquey|moment|chart\.js)/
- }
- };
除此以外还有很多可以加快的办法:
- 应用happypack多过程并行构建
- 应用DllPlugin复竽暌姑模块
webpack-dev-server内置模块热调换,设备起来也很便利,下面以react应用为例,步调如下:
- 在启动webpack-dev-server的时刻带上--hot参数开启模块热调换,在开启--hot后针对css的变更是会主动热调换的,然则js涉及到复杂的逻辑还须要进一步设备。
- 设备页面人口文件
webpack编译在临盆情况出来的js、css、图片、字体这些文件应当放到CDN上,再根据文件内容的md5定名文件,应用缓存机制用户只须要加载一次,第二次加载时就直接拜访缓存。如不雅你之后有修改就会为对应的文件临盆新的md5值。做到以上你须要如许设备:
- {
- output: {
- publicPath: CND_URL,
- filename: '[name]_[chunkhash].js',
- },
- }
更便利的功能
模块热调换
个中lib目次里是编译出的es5代码,es目次里是编译出的采取import export 语法的es5代码,在redux的package.json文件里有这两个设备:
模块热调换是指在开辟的过程中修改代码后不消刷新页面直接把变更的模块调换到老模块让页面出现出最新的效不雅。
- import App from './app';
- function run(){
- render(<App/>,document.getElementById('app'));
- }
- run();
- // 只在开辟模式下设备模块热调换
- if (process.env.NODE_ENV !== 'production') {
- module.hot.accept('./app', run);
- }
当./app产生变更或者当./app依附的文件产生变更时会把./app编译成一个模块去调换老的,调换完毕后从新履行run函数衬着出最新的效不雅。
主动生成html
定义情况变量 NODE_ENV=production
webpack只做了资本打包的工作还缺乏把这些加载到html里运行的功能,在宏大年夜的app熟手在行写html去加载这些资本是很繁琐易错的,我们须要主动精确的加载打包出的资本。
推荐阅读
写这篇文┞仿的启事是因为看到了这个页面:https://shakeduang.nuomi.com/campus/index.html?from=timeline&isappinstalled=1(移动端页面,应用模仿器不雅看)控制 control 层,进入到圆柱画面内应用 CSS3 完成的 3D >>>详细阅读
本文标题:webpack2终极优化
地址:http://www.17bianji.com/lsqh/36159.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示