问题描述
我有一个棱角分明的项目。当我们运行ng build命令时,就像我们在angular-cli.json中设置"outDir": "dist",
一样,在dist文件夹中创建了构建工件。之后,我必须手动将这些文件从dist复制到Java的Webcontent文件夹中,以生成WAR文件。
是否有任何方法可以自动化处理工件的过程。如果我将WebContent的路径设置为outDir值"outDir": "../server/WebContent",
,则生成命令将在生成生成工件之前清除现有的Java文件。
任何建议都会有所帮助。
解决方法
请考虑以下解决方案:
- 在项目 package.json 文件中添加一个名为
build
的{{3}},以执行您的ng build
命令。 - 还要添加一个名为
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命令的包装:
-
cd
到您的项目目录。 -
然后运行以下命令:
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