![](/img/trans.png)
[英]How to execute a package.json script from a node.js script file?
[英]Angular / node.js how to copy the app version from package.json to anothe non json file
在我的 Angular 应用程序中,在构建它时,我必须捕获应用程序版本,它位于我的package.json文件中,并将其复制到另一个不是 json 文件的文件。
我的package.json文件:
{
"name": "my app",
"author": "ME",
"version": "0.1.3",
"scripts": {
"ng": "ng",
"start": "ng serve --public-host --port 4222 http://localhost:4222/",
"build": "ng build",
"sync-version": "sync-json -v --property version --source package.json projects/cockpit-tools/package.json && sync-json -v --property version --source package.json projects/cockpit-tools-demo/src/assets/configuration/properties.json",
"sync-custom": "shx node -p -e \"require('./package.json').version\"",
"copy-version":"MY_COMMAND"
...
}
我的目标文件是属性文件,看起来像这样,它位于 package.json 的相同路径中(此文件用于另一个自动化级别,这就是我无法更改它的原因)
应用信息.properties
project.version=0.0.0
project.author=ME
我的目的是编写一个命令行任务脚本,我可以运行它来同步/复制版本从package.json到我的目标文件中的project.version属性。
我已经尝试了一个名为sync-version的 npm 库,但只有当目标是 json 文件时才有效
我也尝试过在shx package 中使用 shell 命令行来执行此操作。但也没有按预期工作。
我也尝试了一些 node.js 技巧(需要...),但问题仍然存在
我需要找到一种以最简单的方式来完成它的方法,而不是必须安装一些 linux 工具或类似工具(jq 或其他),因为这会在某些 CI CD 上下文中运行,所以宁愿像本机一样尽可能通用。
建议?
一个经典的 DevOps 场景:)
CI/CD 通常发生在 linux 环境中。 您可能会有普通的 shell/bash。 尝试将版本提取到变量中:
myVersion=`grep 'version:' package.json | awk '{print $2}'`
然后在应用程序信息中替换它:
sed -i "s/0.0.0/$myVersion/" apps-info.properties
我们可以通过始终提取最新版本而不是 0.0.0 来使 ot 更通用,但我认为你应该有一个像 0.0.0 这样的占位符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.