2013-11-24 34 views
7

我有一個小的Node模塊,其中包含bin目錄中的命令行腳本。可能在沒有全局安裝的情況下在Node模塊中包含命令行?

"bin": { 
     "generate": "./bin/generate.js" 
    } 

generate.js腳本可以正常執行。

這一切工作正常,如果我運行npm install -g。但我不想全局安裝,只有命令generate在模塊文件夾內工作。如果我從模塊文件夾運行npm install,它會正確安裝node_modules子目錄中的所有依賴項。但是從命令generate就好像給了我「沒有這樣的文件或目錄」。

Thx。

回答

11

我從來不使用-g安裝節點模塊。我對你的問題的解決方案是把它添加到我的$PATH

# add this to ~/.bashrc, ~/.zshrc, or ~/.profile, etc 
export PATH="./node_modules/.bin:$PATH" 

現在,只要你在你的模塊的根,你可以訪問已安裝的模塊的任何二進制文件。


舉個例子,less通常與

npm install -g less 

安裝。但是,如果你有上述修改您的路徑,你可以像這樣

cd my_node_module 
npm install --save less 
lessc less/style.less css/style.css 

不帶路徑修改,你會看到

command not found: lessc 

如果你不喜歡改變你的PATH,您可以訪問二進制直接

cd my_node_module 
npm install --save lessc 
./node_modules/.bin/lessc a.less a.css 

耶,沒有更多的npm install -g ...

+1

謝謝你,完美的迴應。我認爲你的意思是npm安裝較少。 (Lessc是cli的名字) –

+0

你是對的;已更新 –

+1

無論是全局還是本地安裝,每次都會創建一個可執行文件。在後一種情況下,您只需修改PATH。 – KShirish

相關問題