为什么 Angular build 创建的文件带有“es5”和“es2015”而不是“es6”(或者根本没有后缀)?

新手上路,请多包涵

我最近下载了 Angular CLI (@angular/cli 9.0.1)。然后我继续创建一个新的应用程序,这样我就可以创建一个新的 Angular 元素,将其打包并在另一个应用程序中使用它。

在关注了几篇博客之后,我遇到的每篇博客的最后一步都在谈论从 dist/ 文件夹下生成的文件创建单个 JS 文件。例如:https: //blog.bitsrc.io/using-angular-elements-why-and-how-part-1-35f7fd4f0457

然后使用 cat 命令,我们将 dist/angular-app 文件夹中的 runtime.jspolyfills.jsscripts.jsmain.js 文件连接到预览文件夹内的 angularapp.js 文件中。

运行 ng build angular-app --prod --output-hashing=none 而似乎产生名为:

  • main-es5.js
  • main-es2015.js
  • polyfills-es5.js
  • polyfills-es2015.js
  • 运行时-es5.js
  • runtime-es2015.js

我搜索了每个包含术语 es5es2015 的 文件并将其更改为 es6 ,但它仍然生成相同的 es5es2015 文件名。我在这里做错了什么?

原文由 michael 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

Angular 不会将 JavaScript 文件捆绑到一个文件中。

您可以添加构建步骤以将文件连接在一起。

concat-build.js

 var concat = require('concat');
const es5 = ['./dist/app/runtime-es5.js','./dist/app/polyfills-es5.js','./dist/app/main-es5.js'];
const es2015= ['./dist/app/runtime-es2015.js','./dist/app/polyfills-es2015.js','./dist/app/main-es2015.js'];
concat(es5, './dist/app/elements-es5.js');
concat(es2015, './dist/app/elements-es2015.js');

包.json

 "scripts": {
   "concat": "node ./concat-builds.js",
   "build": "ng build --prod --output-hashing=none && npm run concat"
}

不要对 ES5 和 ES2015 构建感到困惑,因为 Angular 团队根据模块的加载方式(而不是专门针对 JavaScript 版本)拆分包。

支持模块的 Web 浏览器将加载 ES2015 版本而不是 ES5 版本,但建议 两者都 在 Html.

如果你只想使用 一个 文件,那么你必须使用旧的 ES5 版本,并且应该按如下方式提供它:

 <script src="elements-es5.js">

建议按如下方式提供这两个文件,浏览器将加载合适的版本:

 <script src="elements-es5.js" nomodule defer>
<script src="elements-es2015.js" type="module">

请注意:

较旧的浏览器将忽略 type="module" 版本,而较新的浏览器将 跳过 nomodule 版本。

原文由 Reactgular 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题