何时以及何时使用“ ng build”生成的lib文件夹的esm5和esm2015目录?

Dav*_*eid 5 javascript node-modules typescript angular-cli angular

在由生成的文件夹中ng build simple-lib,我看到的结构比其他节点模块更复杂。我看到的是bundles,,esm2015esm5,而不是index.js导出和导入其他成员public_api.d.ts

我在esm5和esm2015文件夹中都看到了simple-lib的编译版本。我想知道如何使用esm .js文件以及何时使用esm2015代替esm5。据我了解,esm2015允许使用较小的捆绑包和摇树,但我不确定何时选择使用哪个模块。我希望生成一个可以在节点项目中使用的库,并且希望能帮助您理解是否以及如何实现。谢谢。

$ tree simple-lib/
simple-lib/
??? bundles
?   ??? simple-lib.umd.js
?   ??? simple-lib.umd.js.map
?   ??? simple-lib.umd.min.js
?   ??? simple-lib.umd.min.js.map
??? esm2015
?   ??? lib
?   ?   ??? simple-lib.component.js
?   ?   ??? simple-lib.module.js
?   ?   ??? simple-lib.service.js
?   ??? public_api.js
?   ??? simple-lib.js
??? esm5
?   ??? lib
?   ?   ??? simple-lib.component.js
?   ?   ??? simple-lib.module.js
?   ?   ??? simple-lib.service.js
?   ??? public_api.js
?   ??? simple-lib.js
??? fesm2015
?   ??? simple-lib.js
?   ??? simple-lib.js.map
??? fesm5
?   ??? simple-lib.js
?   ??? simple-lib.js.map
??? lib
?   ??? simple-lib.component.d.ts
?   ??? simple-lib.module.d.ts
?   ??? simple-lib.service.d.ts
??? package.json
??? public_api.d.ts
??? simple-lib.d.ts
??? simple-lib.metadata.json
Run Code Online (Sandbox Code Playgroud)

Dav*_*eid 2

在更新我的角度版本时,我想我可能已经找到了答案。将使用的库取决于请求应用程序的浏览器 - esm5 版本将用于需要更多 polyfill 的旧浏览器,而 esm2015 库将用于需要更少 polyfill 的新浏览器

“CLI 的构建命令现在会自动创建具有最少填充的现代 ES2015 构建以及针对旧版浏览器的兼容 ES5 构建,并根据浏览器加载适当的文件。您可以通过将目标设置回 es5 来选择退出此更改你的 tsconfig.json。在 angular.io 上了解更多信息。”

来自https://update.angular.io/#7.1:9.0