svg.js这个包无法正常运用 追寻仓库发现,这这一步仍是正常的

[✔️]cocos creator 2.x无法加载.js后缀的npm包

到这一步就发现把.js后缀给干掉了

[✔️]cocos creator 2.x无法加载.js后缀的npm包

中心处理的这一步,代码加密了,或许认为这是个js文件,所以就强行把.js去掉了,没有考虑到有些npm package竟然也以.js结束

[✔️]cocos creator 2.x无法加载.js后缀的npm包

解决方案

  1. 自己把这个package改名,在npm上从头发布一下,项目中运用改名后的package
  2. 假如运用的是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',
    // ...
  },
};

其中,键是需求扫除的模块名,值是模块在大局环境中的变量名。例如,上面的装备表明将 jqueryreact 扫除在打包范围之外,而在运转时从大局环境中获取它们。

还有一种更高效的用法是运用正则表达式来匹配模块名,例如:

module.exports = {
  // ...
  externals: {
    '/^lib/': 'commonjs2 lib',
    // ...
  },
};

这个装备将一切以 lib/ 开头的模块都扫除在打包范围之外。

externals 的另一个常见用处是在不同的构建中共享某些模块。例如,咱们能够将大部分代码打包成一个 vendor bundle,然后再将一些常用的库(如reactlodash 等)扫除在构建范围之外。这样能够缩短编译时刻,同时也能使得这些库被多个进口共享,从而减小网页加载时刻。

需求留意的是,运用 externals 需求特别慎重,因为一旦装备不妥,或许会导致程序运转犯错或许依靠模块无法加载。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。