如何在不覆盖输出文件夹中现有文件的情况下更改 dist 文件夹路径

how to change the dist-folder path without overwriting existing files in output folder

我使用 JAVA 和 App Engine 作为后端,angular 作为前端我还想使用 ng build 直接构建我的文件并将它们输出到我的 java 项目所以我尝试在我的 angular.json 文件中替换 outputPath

{

  ...
  "options": [
    {
      "outputPath": "../../myproject/java/src/main/webapp/",
      ...
    }
  ],
  ...
}

所有文件都正确放置在 webapp 文件夹中,但唯一的问题是它会覆盖整个文件夹,导致丢失其他项目 files/directories,所以我必须手动将文件放入该目录是我想避免的。

我还尝试更改 base-href 并尝试从 /dist folder.But 加载我的文件,更改 base-href 会导致不正确的 url 路由。

避免覆盖文件的任何解决方案。

如果您在构建后手动添加文件,那么您可以尝试编写一个 postbuild 操作,将所有这些文件复制到构建文件夹中。

文件package.json:

  "scripts": {
    "start": "ng serve",
    "build": "ng build --prod",
    "postbuild": "cp somefile ../../myproject/java/src/main/webapp/somefile",
    ...
  },

如果您在 windows OS 上并且想要执行多项操作,您可以使用 powershell 脚本,该脚本可以作为 postbuild 步骤调用。

  "scripts": {
    ...
    "postbuild": "powershell ./update-build-folder.ps1",
    ...
  },

每次你 运行 npm build/yarn build,构建目录都会被清理,之后 angular CLI 会输出 JS 文件,然后所有这些自定义文件都会被放在build目录下。

您使用的 angular-cli 是什么版本?我能够成功构建到 angular 项目之外的目录,该目录包含其他文件,而不会删除这些其他文件。 (这是 angular-cli v7.3.9)

最后,您确定删除构建路径中文件的不是其他脚本吗? (即后端构建脚本)

...
"options": {
            "outputPath": "../custom-output/web/build-here",
            ...
},
...

截图: