svg.js
这个包无法正常运用
追寻仓库发现,这这一步仍是正常的
到这一步就发现把.js后缀给干掉了
中心处理的这一步,代码加密了,或许认为这是个js
文件,所以就强行把.js
去掉了,没有考虑到有些npm package竟然也以.js
结束
解决方案:
- 自己把这个package改名,在npm上从头发布一下,项目中运用改名后的package
- 假如运用的是webpack打包,能够在装备中加入externals,也便是将svg.js不扫除,代码直接打进bundle里边,运转的时候不会从外部require,也就防止了这个问题
cc-plugin便是运用的externals,将.js结束的package不扫除,直接打进bundle里边
webpack externals
在 Webpack 中,externals
是一个装备项,用于指定哪些模块不该被打包进输出的 bundle 文件中,而应该作为外部依靠引进。这能够显著减小 bundle 文件的大小,加快网页加载速度,同时也能够防止代码重复。
在装备文件中,externals
能够是一个目标、函数,或许一个字符串。其一般的形式如下:
module.exports = {
// ...
externals: {
'jquery': 'jQuery',
'react': 'React',
// ...
},
};
其中,键是需求扫除的模块名,值是模块在大局环境中的变量名。例如,上面的装备表明将 jquery
和 react
扫除在打包范围之外,而在运转时从大局环境中获取它们。
还有一种更高效的用法是运用正则表达式来匹配模块名,例如:
module.exports = {
// ...
externals: {
'/^lib/': 'commonjs2 lib',
// ...
},
};
这个装备将一切以 lib/
开头的模块都扫除在打包范围之外。
externals
的另一个常见用处是在不同的构建中共享某些模块。例如,咱们能够将大部分代码打包成一个 vendor bundle,然后再将一些常用的库(如react
、lodash
等)扫除在构建范围之外。这样能够缩短编译时刻,同时也能使得这些库被多个进口共享,从而减小网页加载时刻。
需求留意的是,运用 externals
需求特别慎重,因为一旦装备不妥,或许会导致程序运转犯错或许依靠模块无法加载。