【问题标题】:How to put chunk files in separate folder when run ng build?运行ng build时如何将块文件放在单独的文件夹中?
【发布时间】:2019-07-24 15:43:02
【问题描述】:

如何配置在“dist”文件夹中为angular2中的所有块文件创建单独的文件夹?

我已经使用 ngcli 并使用 ng build 运行项目。它创建“dist”文件夹。这很好。

但我想将所有 *.chunk.js 和 *.map 文件放在 dist 中的单独文件夹中。喜欢

dist/modules/0.chunk.js

dist/modules/0.map

所以结构看起来像......

提前致谢。

【问题讨论】:

  • 这个问题可能过于宽泛而无法回答。有很多方法可以做到这一点。
  • Pixelbits 你能用任何一种方式帮助我吗?

标签: angular typescript


【解决方案1】:

虽然这个问题有点过时,但我在 Angular CLI 7 和 8 中偶然发现了同样的问题。

根据 Angular 文档,您可以使用“--resourceOutputPath”和“--deployUrl”。不幸的是,--resourceOutputPath 仅适用于样式表中定义的资产,而“--deployUrl”不会将资产放入文件夹中。

我目前的解决方案是:

  1. 将构建配置中的“baseHref”选项设置为“/static-files/”
  2. 从输出文件夹复制 index.html 文件并将其放在 1 个文件夹上。

现在你以这样的结构结束

/dist
   index.html
   /static-files
      chunk1.js
      chunk2.js
      etc

当然,现在您的所有资产都在一个单独的文件夹中,而不仅仅是您的 js 文件。但它对我有用。

注意:当您还使用 Angular Routing 时,您需要设置 'APP_BASE_HREF' 手册,否则路由器会在您的 url (https://angular.io/api/common/APP_BASE_HREF) 中寻找 'staric-files'

【讨论】:

    【解决方案2】:

    您可以使用 Angular ClI,然后创建多个 NgModule,并在路由器中使用 Lazyload。然后,当您构建ng build --prod 时,每个模块将位于一个单独的文件中。

    以下是一些关于延迟加载的推荐文章: http://blog.angular-university.io/angular2-ngmodule/ https://angular-2-training-book.rangle.io/handout/modules/lazy-loading-module.html

    【讨论】:

    • 谢谢董乐。但我已将 *.chunk.js 和 *.map 文件放在 dist/modules 文件夹中。我希望你明白了。
    【解决方案3】:

    尝试使用单独的构建包,如 gup 或 grunt,这会将块文件发送到单独的文件夹。或者,您也可以在 tsconfig.json 中创建编译器选项{ outDir: 'src/chunk'}。看看这是否能解决您的问题。

    【讨论】:

    • 请更具体地说明它应该如何实现您的建议。只是要求 OP 尝试使用 Gulp 或 Grunt 构建一个全新的构建管道,希望这可能会解决问题并不是很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2017-12-30
    • 2012-08-25
    • 2017-07-11
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多