首页 > 解决方案 > 将 ng build in outdir 生成的工件复制到另一个文件夹

问题描述

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

有没有办法自动化处理工件的过程。如果我将 WebContent 的路径设置为 outDir 值"outDir": "../server/WebContent", ,则构建命令会在生成构建工件之前清理现有的 java 文件。

任何建议都会有所帮助..

标签: node.jsangularnpmangular-cling-build

解决方案


考虑以下解决方案:

  1. 添加一个在您的项目package.json文件中命名的npm 脚本来执行您的命令。buildng build
  2. 还要添加一个名为复制文件的post hook npm 脚本。postbuild

下面介绍如何在*Nix平台上实现这一点,并提供了一个跨平台的解决方案。


*尼克斯(Linux,macOS,...)

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

包,json

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

这个postbuildnpm 脚本利用 shells cp命令递归地将工件从dist目录复制到../server/WebContent目录。脚本成功完成后,postbuild脚本将自动运行。build

跑步:

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

npm run build

跨平台(Linux、macOS、Windows、...)

对于跨平台解决方案,首先安装shx - 它是ShellJS Unix 命令的包装器:

  1. cd到您的项目目录。

  2. 然后运行以下命令:

    npm install -D shx
    

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

包.json

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

跑步:

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

npm run build

推荐阅读