Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 当您调用“npm run”来运行npm脚本时,会发生什么情况?_Node.js_Powershell_Npm_Git Bash - Fatal编程技术网

Node.js 当您调用“npm run”来运行npm脚本时,会发生什么情况?

Node.js 当您调用“npm run”来运行npm脚本时,会发生什么情况?,node.js,powershell,npm,git-bash,Node.js,Powershell,Npm,Git Bash,我想知道更多关于NPM脚本是如何工作的 例如: package.json "scripts": { "build": "set NODE_ENV=production&& webpack --config webpack.config.js", } 当我执行npm运行build时: 会发生什么?我知道一个节点进程将在某处启动,并且网页二进制文件将被调用,对吗?但在此之前的步骤是什么?这取决于我使用的是Windows

我想知道更多关于NPM脚本是如何工作的

例如:

package.json

"scripts": {
  "build": "set NODE_ENV=production&& webpack --config webpack.config.js",
}
当我执行
npm运行build
时:


会发生什么?我知道一个
节点
进程将在某处启动,并且
网页
二进制文件将被调用,对吗?但在此之前的步骤是什么?这取决于我使用的是Windows、Linux、
PowerShell
还是
GitBash
?该过程与正在使用的操作系统和CMD/CLI有何关系?

源代码将整个
运行脚本
功能分离到其自己的模块和存储库中,因此如果您没有回答您的问题,您可以使用

说到你的问题:

我知道某个节点进程将在某个地方启动,并将调用webpack二进制文件,对吗

将运行
webpack
可执行文件。由于
webpack
是一个Node.js脚本,它将与
Node
一起运行

但是,如果“构建”值由shell/CLI命令组成,则将运行这些命令。不一定要调用Node.js

但在此之前的步骤是什么

“在此之前的步骤”包括某些也可能定义的生命周期脚本。特别是,如果有“预构建”脚本,它将在“构建”脚本之前运行

这取决于我使用的是Windows、Linux、PowerShell还是Git bash吗?该过程与正在使用的操作系统和CMD/CLI有何关系

npm
(和
node
)努力使Windows和Linux体验具有可比性。差异确实存在,但如果没有更多的细节,我不确定我是否想推测除此之外您可能感兴趣的细节

Powershell和GitBash:同样,
npm
将努力消除差异,但我相信它们会出现。需要注意的一点是,您的
路径
(和其他环境变量)可能设置不同,这可能会影响行为。(如果安装了多个版本,则它可能会特别影响执行哪个版本的
节点
。)


我不是一名Windows专家,但我见过许多假定类似UNIX环境的
npm
脚本。因此,如果在所有其他条件相同的情况下进行选择(这从来都不是),类似bash的环境可能会更平滑一些。

我想要的答案是这样的:

当您调用
npm run
时,npm将启动一个shell来运行这些指令

npm将使用的shell在npm设置中定义

您可以通过运行以下命令查看您的npm配置:

>>> npm config ls

在上面的示例中,npm将在
gitbash
上运行脚本

您可以通过调用以下命令更改npm shell:

npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"

谢谢如果我做对了,请告诉我。这是正确的顺序吗?1-您所在的CLI(PowerShell、Bash等)需要知道
npm
命令的路径。这可能是在安装Node时设置的,对吗?2-节点将评估脚本并决定执行什么操作?启动节点进程或运行shell/CLI命令?如果有shell/CLI命令,将使用什么来运行这些命令?