所以我几年来一直使用NPM作为一个简单的构建工具,我可以假设通过package.json
安装的每个CLI工具都可以在PATH
中使用,因为NPM添加了{{ 1}}它的路径。
但是当我准备写一个小的Node脚本做一些房屋清理工作时,我有点担心,如果NPM实际上在它给用户的PATH中有./node_modules/.bin
可执行文件。这可能看起来很愚蠢,因为node
中的所有脚本依赖于./node_modules/.bin
在Unix上的包装器脚本能够找到它,但我认为可能会有一些魔力在Windows中。也许他们会使用自己的其他魔法。或者其他的东西。没关系,真的,我只是想断言:
node
的{{1}}可执行文件始终位于由node
提供给npm脚本的PATH
上吗?在所有平台上?它是否与NPM运行时的节点始终相同?
这可能看起来太基本了,几乎不会被问到,但比抱歉更安全。
答案 0 :(得分:1)
注意:不是明确的答案,但评论过于冗长
如果您查看为脚本设置的default values文档:
npm将根据包内容默认一些脚本值。
“start”:“node server.js”:
如果包的根目录中有server.js文件,则为npm 将start命令默认为 node server.js 。
虽然这不是您问题的明确答案,但如果没有定义node
,npm会使用npm start
作为默认值。这是一个明确的指标,npm依赖节点在所有情况下都存在。
答案 1 :(得分:1)
在Windows上,您可以安全地假设npm要求节点位于PATH中,或者与npm位于同一文件夹中。这来自npm.cmd
(键入npm时调用的脚本):
SET "NODE_EXE=%~dp0\node.exe"
IF NOT EXIST "%NODE_EXE%" (
SET "NODE_EXE=node"
)