美文网首页Webpack
4.13.1 接入webpack

4.13.1 接入webpack

作者: 柠檬与断章 | 来源:发表于2019-11-28 09:38 被阅读0次

4.13.1 接入webpack
问题一: 使用 Scope Hoisting?

要在 Webpack 中使用 Scope Hoisting 非常简单,因为这是 Webpack 内置的功能,只需要配置一个插件,相关代码如下:

const ModuleConcatenationPlugin = require('webpack/lib/optimize/ModuleConcatenationPlugin');

module.exports = {
plugins: [
// 开启 Scope Hoisting
new ModuleConcatenationPlugin(),
],
};

同时,考虑到 Scope Hoisting 依赖源码需采用 ES6 模块化语法,还需要配置mainFields。 原因是:因为大部分 Npm 中的第三方库采用了 CommonJS 语法,但部分库会同时提供 ES6 模块化的代码,为了充分发挥 Scope Hoisting 的作用,需要增加以下配置:

module.exports = {
resolve: {
// 针对 Npm 中的第三方模块优先采用 jsnext:main 中指向的 ES6 模块化语法的文件
mainFields: ['jsnext:main', 'browser', 'main']
},
};

对于采用了非 ES6 模块化语法的代码,Webpack 会降级处理不使用 Scope Hoisting 优化,为了知道 Webpack 对哪些代码做了降级处理, 你可以在启动 Webpack 时带上--display-optimization-bailout参数,这样在输出日志中就会包含类似如下的日志:

[0] ./main.js + 1 modules 80 bytes {0} [built]
ModuleConcatenation bailout: Module is not an ECMAScript module

其中的ModuleConcatenation bailout告诉了你哪个文件因为什么原因导致了降级处理。

也就是说要开启 Scope Hoisting 并发挥最大作用的配置如下:

const ModuleConcatenationPlugin = require('webpack/lib/optimize/ModuleConcatenationPlugin');

module.exports = {
resolve: {
// 针对 Npm 中的第三方模块优先采用 jsnext:main 中指向的 ES6 模块化语法的文件
mainFields: ['jsnext:main', 'browser', 'main']
},
plugins: [
// 开启 Scope Hoisting
new ModuleConcatenationPlugin(),
],
};

相关文章

  • 4.13.1 接入webpack

    4.13.1 接入webpack问题一: 使用 Scope Hoisting? 要在 Webpack 中使用 Sc...

  • 3.7.2 接入 Webpack

    3.7.2 接入 Webpack 问题一:为什么要接入 Webpack? 用 Webpack 构建接入 Servi...

  • 4.12.1 接入 Webpack

    4.12.1 接入 Webpack问题一:接入 Webpack? Prepack 需要在 Webpack 输出最终...

  • 4.2.1 接入 Webpack

    4.2.1 接入 Webpack问题一:接入Webpack? Webpack 已经内置了对动态链接库的支持,需要通...

  • 4.8.1 用 Webpack 实现 CDN 的接入

    4.8.1 用 Webpack 实现 CDN 的接入问题一:用 Webpack 实现 CDN 的接入? 总结上面所...

  • webpack入门

    关于webpack有啥用,就不说了,直接入门。记录下如何操作webpack。首先来一个package.json文件...

  • 2020-08-05npm ERR! Failed at the

    npm ERR! Failed at the node-sass@4.13.1 postinstall scrip...

  • 2021-11-08

    vue安装node-sass报:Failed at the node-sass@4.13.1 postinstal...

  • Node学习笔记二:Hello Express

    Express 版本:4.13.1 1 启动服务 1.1 手动启动 如果需要手动启动服务,执行命令: 或: 1.2...

  • 小红书产品体验报告

    0.体验环境 体验产品:v4.13.1体验机型:iphone6体验系统:ios10.1体验时间:2017.01.1...

网友评论

    本文标题:4.13.1 接入webpack

    本文链接:https://www.haomeiwen.com/subject/rbpxictx.html