如何在Angular v8中关闭差分加载?

Tea*_*Two 13 angular

Angular-CLI v8实现了差分加载。但是我不需要es5构建的文件。我想减少部署数量。

我在下面尝试过。但是CLI已生成es5文件。

  • es5browsersupport: false在angular.json中设置,并得到错误。
  • 从browserList中排除Chrome 41,IE 9-11和ie_mob 11。

Mil*_*eld 16

这些答案中没有一个对我有用@angular/cli 8.3.8。使用npx browserslist我可以看到列表中的浏览器比这些 StackOverflow 答案的最新浏览器多。

为简单起见并确保不会尝试为 构建差异加载es5,您可以将您设置browserslist为仅使用 1 个较旧(但仍es6/es2015兼容)的浏览器版本

# we only want es2015 compliant browsers https://caniuse.com/#feat=es6
# just use one as representative for all
Chrome >= 61 
Run Code Online (Sandbox Code Playgroud)

  • 更新到 ng12 后,Es5 捆绑包启动会重新出现 - 浏览器列表或目标没有更改。所以我也采用这个解决方法。 (2认同)

小智 13

在Angular 8中,文件browserlist必须位于项目根文件夹中。我的项目上需要以下条目来禁用差异加载:

> 0.5%
last 2 versions
Firefox ESR
not dead
not IE 9-11
not samsung 4
not android 4.4.3-4.4.4
not last 2 ie_mob versions
not last 2 op_mini versions
not last 2 op_mob versions
not last 2 baidu versions
not last 2 kaios versions
not last 2 and_uc versions
not last 2 and_qq versions
not last 2 edge versions
not chrome 49
Run Code Online (Sandbox Code Playgroud)


Tea*_*Two 10

我成功地在 Angular v8-rc4 中构建了没有 es5 文件的文件。

在 browserList 中设置如下以isEs5SupportNeededbuild-angular 中设置为false 。

> 0.5%
last 2 versions
Firefox ESR
not dead
not samsung 4
not android 4.4.3-4.4.4
not last 2 IE versions
not last 2 ie_mob versions
not last 2 op_mini versions
not last 2 op_mob versions
not last 2 baidu versions
not last 2 kaios versions
not last 2 and_uc versions
not last 2 and_qq versions
not last 2 edge versions
Run Code Online (Sandbox Code Playgroud)

请参阅此列表。 https://caniuse.com/#feat=es6-module


Nic*_*asi 8

最快的解决方案:切换回es5作为tsconfig.json.

"compilerOptions": {
        ...
        "target": "es5"
        ...
}
Run Code Online (Sandbox Code Playgroud)

正如 Angular 官方文档(https://angular.io/guide/deployment#differential-loading)所述:

要显式禁用差异加载:

  • 通过删除它们前面的 not 关键字,在 browserslist 配置文件中启用死浏览器或 IE 浏览器。
  • 将 compilerOptions 中的目标设置为 es5。


小智 8

只需在 .browserslistrc 中指定

supports es6-module
Run Code Online (Sandbox Code Playgroud)


epe*_*per 6

通过在package.json. (置于顶层,同“name”、“dependencies”等)

 "browserslist": [
    "last 2 Chrome versions"
  ]
Run Code Online (Sandbox Code Playgroud)

这种情况适用于您只需要应用程序在 Chrome 中工作的特定情况。如果您需要更多浏览器兼容性,请在此处查看实施文档中的其他选项:https : //www.npmjs.com/package/browserslist


Ben*_*cot 6

对于 2021 年的答案 (Angular 11 - 12.1.1)\n我的 package.json 文件中的此浏览器列表停止构建ES5捆绑包。

\n

在撰写本文时,符合这些描述的浏览器可以处理我的tsconfig构建目标。

\n
scripts: {...\ndependencies: {...\ndevDependencies: {...\n...\n"browserslist": [\n    "last 5 Chrome versions",\n    "last 5 ChromeAndroid versions",\n    "last 3 Safari versions",\n    "last 3 iOS versions",\n    "last 5 Firefox versions",\n    "last 5 FirefoxAndroid versions",\n    "Firefox ESR",\n    "last 2 Edge versions",\n    "not dead"\n]\n
Run Code Online (Sandbox Code Playgroud)\n
\n

在您的项目目录中运行npx browserslist以查看您的项目\xe2\x80\x99s\n目标浏览器。

\n

此 CLI 工具是内置的,可在任何带有 Autoprefixer 的项目中使用。

\n
\n

正如您所看到的,放弃过时的浏览器有巨大的优势。

\n
Initial ES5 Total | 1.12 MB \nInitial ES2020 Total | 960.50 kB\n
Run Code Online (Sandbox Code Playgroud)\n

  • 如果您正在使用从 Angular <=8 开始并逐步更新到 Angular 10+ 的代码库,您可能会发现编译器突然开始生成用于差异加载的 ES5 模块。在这种情况下,根据此处的注释修改“tsconfig.json”和“.browserslistrc”文件后,请确保将 npm 包“browserslist”和“caniuse-lite”更新到最新版本。这将确保最新的 Angular 编译器的 is- Differential-loading-required 自动检测机制能够按照“caniuse-lite”包中最新功能定义的预期工作。 (2认同)
  • 在 Angular 12 中唯一对我有用的事情就是将 browserlist 添加到 package.json 中。 (2认同)