2017-02-28 23 views
1

所以我已經使用NPM作爲一個簡單的構建工具幾年,我可以假設通過package.json安裝的每個CLI工具在PATH中可用,因爲NPM將./node_modules/.bin路徑添加到它。

但是因爲我正要寫一個小的Node腳本來做一些清理家務,所以如果NPM實際上在它給用戶的PATH中有node可執行文件,我有點擔心。這可能看起來很愚蠢,因爲./node_modules/.bin中的所有腳本都依賴於node,因爲Unix上的包裝腳本能夠找到它,但我認爲在Windows中可能會有一些魔術出現在上。也許他們使用自己的一些其他魔法。或者其他的東西。沒關係,真的,我只是希望能夠斷言:

是在node執行總是由NPM給NPM腳本PATH?在所有平臺上?它和NPM運行的節點是否一樣?

這似乎過於基本,幾乎可以問,但比抱歉更安全。

回答

1

注:沒有一個明確的答案,但過於冗長的評論

如果你看一下在default values的文檔被設置爲腳本:

NPM將默認一些基於包內容的腳本值。

「開始」:「節點server.js」:

如果在你的包的根server.js文件,然後NPM 將默認啓動命令節點server.js

雖然這不是一個明確的回答你的問題,NPM使用node作爲默認的情況下,沒有定義npm start。這是一個明確的指標,npm依賴節點在任何情況下都存在。

+0

這是一個非常好的跡象:) – oligofren

1

在Windows上,您可以安全地假設npm要求節點位於PATH中,或與npm位於同一文件夾中。這是從npm.cmd(也就是當你輸入NPM調用的腳本):

SET "NODE_EXE=%~dp0\node.exe" 
IF NOT EXIST "%NODE_EXE%" (
    SET "NODE_EXE=node" 
)