在生产中排除资产

时间:2018-11-14 10:14:00

标签: angular angular-cli

我有一些资产(图像,样式)仅在开发(服务时)时需要。这些资产不得包含在生产版本中。在生产中,这些资产由CDN提供。

我需要:

  • ng serve应该投放文件夹中包含的文件 ./assets-non-build

但是:

  • ng build不应该插入文件夹./assets-non-build中的 最终版本

我在SO上解决了10个类似的问题,在github上解决了5个问题,它们都处理排除文件,但是没有一个解决了我的问题。

3 个答案:

答案 0 :(得分:3)

angular.json内有一个配置对象projects.{project-name}.architect.build.configurations

将产品条目中的assets设置为[]

"prod": {
  //...
  "assets": []
}

这是未经测试的,但是通过从配置文件中了解到的信息来看,这应该是可能的。

这将进行任何构建并与生产标记一起使用以排除资产。如果您确实希望所有构建(无论环境如何)都没有资产,则将assets数组从projects.{project-name}.architect.build.options移到projects.{project-name}.architect.serve.options并在build中设置一个到一个空数组。

答案 1 :(得分:1)

PS:代码尚未尝试过,但由于注释太长,因此请在此处发布答案。

"architect": {
                "build": {
                    "builder": "@angular-devkit/build-angular:browser",
                    "options": {
                        ....
                        "tsConfig": "src/tsconfig.app.json",
                        "assets": [
                            "src/favicon.ico",
                            "src/assets"
                        ],
                        "styles": [
                             ...
                        ],
                        "scripts": []
                    }
                    }
                },
                "serve": {
                        "assets": [
                            "src/assets"
                        ],
                }

答案 2 :(得分:0)

看来Poul Kruijt的答案对于旧版本的angular是正确的。 在Angular 9 prod上的条目对我不起作用。您必须改用production。 这就是我在角度9中的工作方式。