将由ng build in outdir生成的工件复制到另一个文件夹 * NixLinux,macOS等跨平台Linux,macOS,Windows等

问题描述

我有一个棱角分明的项目。当我们运行ng build命令时,就像我们在angular-cli.json中设置"outDir": "dist",一样,在dist文件夹中创建了构建工件。之后,我必须手动将这些文件dist复制到Java的Webcontent文件夹中,以生成WAR文件

是否有任何方法可以自动化处理工件的过程。如果我将WebContent的路径设置为outDir值"outDir": "../server/WebContent",,则生成命​​令将在生成生成工件之前清除现有的Java文件

任何建议都会有所帮助。

解决方法

请考虑以下解决方案:

  1. 在项目 package.json 文件中添加一个名为build的{​​{3}},以执行您的ng build命令。
  2. 还要添加一个名为postbuild的{​​{3}} npm脚本来复制文件。

下面介绍了如何在 * Nix 平台上实现此目标,并提供了跨平台解决方案。


* Nix(Linux,macOS等)

在* nix平台上,npm使用sh作为运行npm脚本的默认外壳。因此,将以下内容添加到项目 package.json scripts部分:

package,json

"scripts": {
  "build": "ng build","postbuild": "cp -r dist/ ../server/WebContent"
}

postbuild npm脚本利用shell npm script命令将工件从dist目录递归复制到../server/WebContent目录。 postbuild脚本成功完成后,build脚本将自动运行。

运行:

通过命令行而不是ng build运行以下命令:

npm run build

跨平台(Linux,macOS,Windows等)

对于跨平台解决方案,请先安装post hook-它是cp Unix命令的包装:

  1. cd到您的项目目录。

  2. 然后运行以下命令:

    npm install -D shx
    

定义项目 package.json scripts部分,如下所示:

package.json

"scripts": {
  "build": "ng build","postbuild": "shx cp -r \"dist/*\" \"../server/WebContent\""
}

运行:

通过命令行而不是ng build运行以下命令:

npm run build