2017-09-13 162 views
0

不僅可以從項目根目錄運行NPM腳本,也可以從子文件夾運行NPM腳本。但是,由於它不能告訴我當前的工作路徑($ PWD)。NPM腳本如何使用我當前的工作目錄(在嵌套子文件夾中時)

比方說,有這樣的命令:

"scripts": { 
    ... 
    "pwd": "echo $PWD" 
} 

如果我的項目的根的子文件夾(例如,$PROJECT_ROOT/src/nested/dir)中運行npm run pwd,而不是打印出我的電流通路$PROJECT_ROOT/src/nested/dir,它總是給$PROJECT_ROOT回來。有什麼方法可以告訴NPM腳本使用我當前的工作目錄,而不是解決package.json駐留的位置?

基本上,我想拉一個約曼發電機到現有的項目,並使用它來NPM腳本,這樣每個人都可以使用共享知識(例如,npm run generator),而不是學習任何東西約曼特定的(例如npm i yo -g; yo generator)。由於生成器基於當前工作路徑生成文件,而NPM腳本始終解析爲項目根目錄,所以我不能在想要使用它的地方使用生成器。

回答

1

一個已知的解決方案是通過ENV變量注入。

例如:

聲明在命令行的變量:

cwd="$(pwd)" npm run pwd

消耗的package.json將env變量:

"pwd": "cd $cwd && echo $PWD"

然而,總是傳遞cwd="$(pwd)"因爲前綴看起來更像是一個黑客,有沒有任何清潔/ bett er解決方案?

+0

+1因爲我試圖做同樣的事情,並做到了這一點。看起來像一個應該內置在npm腳本中的功能。我不想要添加一個完整的依賴關係,只爲我輸入4個字母。 – oooyaya

相關問題