dynamic-vendor-webpack-plugin v 1.0.0
通过动态变量和特定的代码分割来导入第三方依赖库。
前置条件
本插件依赖Webpack 4,它将随 webpack 主版本进行更新。
安装
yarn add -D dynamic-vendor-webpack-plugin
# 或
npm i --save-dev dynamic-vendor-webpack-plugin
1
2
3
2
3
使用
动态第三方依赖库代码分割分为两步。首先,您需要在您的 webpack 配置中设置您想要的“惰性”第三方依赖库的插件,然后再您的代码中所需的地方引入动态的导入器。
webpack.config.ts
import { DynamicVendorPlugin } from 'dynamic-vendor-webpack-plugin';
import { Configuration } from 'webpack';
const config: Configuration = {
// ... 您的 webpack 配置
plugins: [
new DynamicVendorPlugin({
vendors: ['my-vendor'],
}),
],
}
export default config;
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
index.ts
// 取回您的第三方依赖库的数组
// 该模块不是默认加载的,而是包裹在一个纯函数中。
import { dynamicImporter } from 'dynamic-vendor-webpack-plugin/dynamicImporter';
(async () => {
// 通过它来运行
for (const fn of dynamicImporter) {
// 使用该方法获取模块
const m = await fn();
// 使用
new (m.default)();
}
})();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
这将生成一个带有该第三方依赖库(及其独有的依赖)的独立的块,应用将按需加载。
配置项
options.vendors: Array<string | VendorEntry>
:第三方依赖库的列表,包括库的名称和一个带有细节信息的对象。options.vendors[].name: string
:依赖库的名称。options.vendors[].magicComment: WebpackMagicComment
:webpack 魔法注释所导入的配置列表。(参见:这里)
options.webpackChunkName: string
:动态第三方库代码块的名称。默认是:"dynamic-vendor",您可以使用一个 vendor 对象自动地覆盖每个依赖库。
有条件的第三方库
webpack.config.ts
const DEV = process.env.NODE_ENV === 'development';
{
mode: DEV ? 'development' : 'production',
plugins: [
new DynamicVendorPlugin({
vendors: [
{
name: DEV ? 'mock-service-lib' : 'service-lib',
},
],
}),
],
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
将类似的特定第三方库组合在一起(例如,插件):
webpack.config.ts
import packageJson from './package.json';
{
plugins: [
new DynamicVendorPlugin({
// 您想要在一个特定的模式下懒盲加载所有第三方依赖库,在这个例子中是'@mylib/*'
vendors: Object.keys(packageJson.dependencies).filter(d => d.startsWith('@mylib/')),
}),
],
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10