[英]How to fetch package version and date in npm script?
我有一個 package.json 文件,我有這個腳本來創建 2 個單獨的文件,一個用於版本,另一個用於日期。
當我運行該命令時,它會生成具有正確數據的version-npm.txt
,其中包含當前版本,但 version.txt 文件是使用確切的腳本生成的,它包含date +"%d/%m/%Y %T"
"scripts": {
"versions": "node -e \"console.log(require('./package.json').version);\" > ./public/version-npm.txt && echo `date +\"%d/%m/%Y %T\"` > ./public/version.txt"
}
我需要用當前日期和時間更新它。 有沒有其他方法或者你能幫我解決它嗎?
我嘗試將日期寫為\"$(date)\"
仍然相同,現在我得到\"$(date)\"
您獲取日期的方式,即date +\"%d/%m/%Y %T\"
或類似地使用\"$(date)\"
確實在*nix平台上成功運行, sh
通過默認運行 npm 腳本。
However, the aforementioned method does not work on Windows because npm on that OS cmd
as the default shell to run npm scripts - cmd
simply does not understand the date
command.
以下解決方案適用於跨平台(Windows、Linux、MacOS 等):
首先cd
到您的項目目錄並通過運行以下命令安裝時刻package:
npm i -D moment
我們將利用這個 package 來獲取格式為DD/MM/YYY HH:MM:SS
的日期/時間。
然后在package.json的scripts
部分重新定義您的versions
腳本,如下所示:
"scripts": { "versions": "node -p \"process.env.npm_package_version\" >./public/version-npm.txt && node -p \"require('moment')().format('MM/DD/YYYY HH:mm:ss')\" >./public/version.txt" }
解釋:
npm 腳本(上圖)利用 nodejs 命令行選項-p
來評估和打印以下內聯 JavaScript 的結果:
process.env.npm_package_version
這實質上是利用 nodejs process.env
來讀取 npm 創建的環境變量npm_package_version
。 請在此處查看我的答案以獲取更多說明。
然后使用與您嘗試相同的方法將版本重定向 ( >
) 到文件:
>./public/version-npm.txt
注意:如果您願意,您可以繼續使用當前更詳細的解決方案從package.json獲取版本,即
node -e \"console.log(require('./package.json').version);\"
接下來我們獲取日期。 我們再次使用 nodejs 命令行選項-p
來評估和打印以下內聯 JavaScript 的結果:
require('moment')().format('MM/DD/YYYY HH:mm:ss')
日期值被重定向 ( >
) 到文件,如下所示:
>./public/version.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.