webpack 基于部署中的环境淹没清单文件

1szpjjfi  于 2023-04-06  发布在  Webpack
关注(0)|答案(2)|浏览(173)

我想在我们的staging和生产环境中部署一个不同的manifest文件。我想知道如何在Angular.json中使用fileReplacement,如下所示:

"configurations": {
        "production": {
          "fileReplacements": [
            {
              "replace": "apps/store/src/manifest.webmanifest",
              "with": "apps/store/src/manifests/manifest.prod.webmanifest"
            }
          ],
         ....
      }

这可能吗?如果不可能,我该怎么做?
谢谢。

wz3gfoph

wz3gfoph1#

只要没有人找到一个合适的答案来回答我的问题。我喜欢分享我的解决方法:
使用NPM脚本:
Package.json:

"manifest:prod": "cp ./apps/store/src/manifests/manifest.prod.webmanifest ./apps/store/src/manifest.webmanifest",

在Gitlab中:

script:
    - npm install -g @angular/cli
    - npm install
    - npm run manifest:prod
slhcrj9b

slhcrj9b2#

文件替换只能针对 typescript 源文件(.ts、.html、...)https://github.com/angular/angular-cli/issues/20263
相反,您可以在angular.json中使用索引替换来直接替换index.html中的导入

"configurations": {
    "production": {
      "index": [ 
        {
          "input": "src/manifests/manifest.webmanifest",
          "output": "src/manifests/manifest.prod.webmanifest"
        },
      ],
     ....
  }

确保您已将所有清单导入到资产中

"assets": [
   "src/manifests/*"
]

如果你把所有的清单放在src/manifests/中
你应该在你的index.html里有这个

<link rel="manifest" href="manifests/manifest.webmanifest" />

相关问题