多入口多出口css
重要的几个概念:入口,loader,plugin,输出前端
loader 的匹配规则中有两个最关键的因素:一个是匹配条件(test,include,exclude,and,or,not),一个是匹配规则后的应用(loader名字)。 use 来指定须要用到的 loader 对于一些不须要解析依赖(即无依赖) 的第三方大型类库等,能够经过这个字段来配置,以提升总体的构建速度。 module.noParse
noParse: /jquery|lodash/
node
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
before 在 webpack-dev-server 静态资源中间件处理以前,能够用于拦截部分请求返回特定内容,或者实现简单的数据 mockjquery
after 在 webpack-dev-server 静态资源中间件处理以后,比较少用到,能够用于打印日志或者作一些额外处理。webpack
中间件就是在 Express 之类的 Web 框架中实现各类各样功能(如静态文件访问)的这一部分函数。多个中间件能够一块儿协同构建起一个完整的 Web 服务器。git
webpack-dev-middleware(express提供的webpack-dev-server静态服务能力的中间件)github
webpack-dev-middleware 的好处是能够在既有的 Express 代码基础上快速添加 webpack-dev-server 的功能,同时利用 Express 来根据须要添加更多的功能,如 mock 服务、代理 API 请求等。web
首先咱们要明白,对于 webpack 的配置,实际上是对外暴露一个 JS 对象,因此对于这个对象,咱们均可以用 JS 代码来修改它express
HMR 能够理解为加强版的 Hot Reloading,但不用整个页面刷新,而是局部替换掉部分模块代码而且使其生效,能够看到代码变动后的效果json
webpack 内部运行时,会维护一份用于管理构建代码时各个模块之间交互的表数据,webpack 官方称之为 Manifest,其中包括入口代码文件和构建出来的 bundle 文件的对应关系
目前weback4.x中只须要将hot:true就能够了,不须要手动引入HotModuleReplacementPlugin
减小 resolve 的解析
特别是由于 Babel 会将代码转为字符串生成 AST,而后对 AST 继续进行转变最后再生成新的代码,项目越大,转换代码越多,效率就越低
换种方式处理图片: 咱们能够直接使用 imagemin 来作图片压缩,编写简单的命令便可。而后使用 pre-commit 这个类库来配置对应的命令,使其在 git commit 的时候触发,而且将要提交的文件替换为压缩后的文件。不用每次运行打包项目都压缩图片
使用 DLLPlugin打包公共代码,将公共代码抽离成单独文件的优化方案(css)
optimization.concatenateModules:true 分析出模块之间的依赖关系,尽量的把打包出来的模块合并到一个函数中去
webpack 整个构建流程