[英]npm: run scripts from package.json from anywhere inside the project folder
我正在使用 package.json 文件中的scripts
部分來存儲我必須定期運行的一些命令。
"scripts": {
"test": "./test/phantomjs ./test/js/run_jasmine_test.coffee ./test/index.html",
"rjs": "r.js -o ./js/app.build.js",
"less": "lessc -x ./css/app.less > ./css/app.css"
}
在每個命令中,我在路徑的開頭都有一個./
- 這就是為什么我只能從項目的根目錄調用npm run-script rjs
的原因。 有沒有辦法在 package.json 中引用項目的根目錄,以便我可以從項目中的任何位置運行例如npm test
?
我認為這取決於您組織項目的方式。
我創建了一個示例項目只是為了演示。 這是我的示例項目目錄樹:
.
├── dir1
│ └── dir2
├── package.json
├── src
│ └── index.js
└── test
└── test.js
注意: ./dir1/ ./dir1/dir2
只是用於演示的兩個空目錄。
我的package.json
文件如下所示:
{
"name": "sample",
"version": "1.0.0",
"description": "sample",
"main": "index.js",
"scripts": {
"test": "node test/test.js",
"start": "node src/index.js"
},
"author": "yaniv",
"license": "ISC"
}
專注於腳本部分,這兩行很簡單,沒有考慮我的位置。
如果我將目錄更改為/dir1/dir2
並執行npm test
並且我在test
屬性上編寫的腳本在不使用./
(定義當前目錄...)的情況下正確執行
底線- 我想如果你重新組織你的項目並刪除./
將完成你的工作。
我們可以通過npm為我們設置的環境變量INIT_CWD
來引用項目的根目錄!
來自文檔:
腳本從模塊的根目錄運行,無論您調用 npm run 時當前的工作目錄是什么。 如果你希望你的腳本根據你所在的子目錄使用不同的行為,你可以使用INIT_CWD環境變量,它保存你運行 npm run 時所在的完整路徑。
例子:
"tas:adminApp:build": "cd src/KidoService/AdminApp && npm run build && cd $INIT_CWD && gulp build_copyAdminApp",
只是因為我愛想太多!
如果我們沒有為我們設置這樣的變量怎么辦!
我們可以在所有啟動時執行一個環境變量設置命令! export ROOT_DIR=$PDW
!
然后在我們需要的時候! 我們可以使用它!
上面的例子會變成
"tas:adminApp:build": "export ROOT_DIR=$PDW && cd src/KidoService/AdminApp && npm run build && cd $ROOT_DIR && gulp build_copyAdminApp",
你可以看到這是一個很好的技術! 我們可以使用它來引用我們想要返回的一些目錄!
對於 Windows,我們使用set VAR=VALUE
考慮創建一個運行的 shell 文件?
例如創建 a.sh 文件使其可執行 (chmod 777 file.sh)
然后 cd 到你的 nodejs 項目根目錄,運行 npm 命令,然后 cd 回到你剛剛離開的目錄?
將腳本添加到您的環境將使它可以從任何地方執行...
或者將硬編碼完整路徑可以嗎? (所以而不是使用./ - 放/home/user/username/yourproject/phantomjs)
我正在使用 package.json 文件中的scripts
部分來存儲一些我必須定期運行的命令。
"scripts": {
"test": "./test/phantomjs ./test/js/run_jasmine_test.coffee ./test/index.html",
"rjs": "r.js -o ./js/app.build.js",
"less": "lessc -x ./css/app.less > ./css/app.css"
}
在每個命令中,我在路徑的開頭都有一個./
- 這就是為什么我只能從項目的根目錄調用npm run-script rjs
。 有沒有辦法在 package.json 中引用項目的根目錄,以便我可以從項目的任何地方運行例如npm test
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.