2012-06-05 20 views
2

我試圖創建一個node.js命令行實用程序,並與npm生成的包裝問題。我的超簡單的演示是的package.json文件:npm生成的命令不調用節點

{ 
    "name": "demo-cli", 
    "version": "0.0.1", 
    "bin": { "demo": "bin/demo-cli.js" } 
} 

而且演示cli.js文件:

console.log('DEMO WORKED'); 

的問題是,當我安裝在項目目錄使用npm install -g而模塊它生成的包裝器不會以該文件作爲參數調用節點。這是生成的demo.cmd的內容:

:: Created by npm, please don't edit manually. 
"%~dp0\.\node_modules\demo-cli\bin\demo-cli.js" %* 

unix版本具有相同的問題。查看另一個全局安裝的CLI,我可以看到該節點正在按照預期進行測試和調用。

:: Created by npm, please don't edit manually. 
@IF EXIST "%~dp0\node.exe" (
    "%~dp0\node.exe" "%~dp0\.\node_modules\mocha\bin\mocha" %* 
) ELSE (
    node "%~dp0\.\node_modules\mocha\bin\mocha" %* 
) 

npm生成正確的腳本文件需要什麼祕密醬?我試過了所有我能找到或想到的東西,包括刪除.js擴展名,更喜歡全局,指定節點版本......沒有運氣。

我在Windows 7 x64上使用節點v0.6.18和npm v1.1.21。

回答

7

嘗試把

#!/usr/bin/env node 

在你demo-cli.js文件的頂部。

在窗口上,npm在創建.cmd包裝器時查找此shebang行。有關詳細信息,請參見npm源文件中的cmd-shim.js

+0

這樣做。我想這是一件簡單的事情。謝謝! –