全国咨询热线:400-009-1906

webpack3.0新特性

  webpack已经成为了前端不可忽略的必须掌握技能之一,随着时间的推移与需求,webpack的版本也在不断的迭代更新。当过你想学习更多前端的知识可以考虑H5培训相关内容。关注我们。

  6 月 20 日,Webpack 发布了最新的 3.0 版本,并在 Medium 发布了公告。Webpack 团队与社区联系更为紧密,在优先实现社区希冀的功能需求的同时,提供了更快且更稳定的发布流程。对于本次发布的

  Webpack 3.0 版本,用户可以便捷地平滑升级,享受新版本中带来的性能提升与 Magic Comment 等新特征。

  下面是 v3.0 Release 中的 Features List。

  1.node_modules no longer mangle to ~ in stats [breaking change]

  2.timeout for HMR requests is configurable

  3.added experimental Scope Hoisting (webpack.optimize.ModuleConcatenationPlugin)

  4.some performance improvements

  5.added output.libraryExport to select an export for the library

  6.sourceMapFilename now supports [contenthash] [breaking change]

  7.module.noParse supports functions

  8.add node: false option to disable all node specific additions

  1.1 更新方法以及版本迁移

  通过命令直接安装即可,后面需要加上版本号。

  npm install webpack@3.0.0 --save-dev

  或者

  yarn add webpack@3.0.0 --dev

  至于从 Webpack 2 升级到 Webpack 3,官方的原话是:

  no effort beyond running the upgrade commands in your terminal

  所以可以断定,虽然版本号进行了大版本号的变更,不过并不会有太大的变化,可以松一口气了。

  1.2 Scope Hoisting

  之前的每一个 module 都被包含在一个独立的 function closures 中,这样的处理方式就造成了在代码在浏览器中执行缓慢的问题。

  开发团队参考了 Closure Compiler 和 RollupJS 等框架后,将 function closures 的包裹方式变成了可配置的形式。

  就是在之前的 plugins 中配置即可。

  module.exports = {

  plugins: [

  new webpack.optimize.ModuleConcatenationPlugin()

  ]

  };

  当然可能因为某些模块的加载导致不能配置成功,官方提供了 CLI 的参数 --display-optimization-bailout 用于 debug 是什么原因导致了配置失败。

  1.3 Magic Comments

  其实就是可以命令 chunk name 了。

  import(/* webpackChunkName: "my-chunk-name" */ 'module');

  2. 接下来的新特性

  更好的编译缓存

  更快的首次以及增量编译速度

  对 TypeScript 更加友好地支持

  修改 Long term caching

  增加对 WASM Module 的支持

  用户体验的改进