以文件夹名称作为参数的Node.js命令行
我在查看github repo时注意到,在以文件夹名称作为参数的Node.js命令行,node.js,Node.js,我在查看github repo时注意到,在package.json中,有一个脚本定义为“start”:节点服务器(服务器是包含index.js文件的文件夹的名称) 这条线到底是干什么的?当我们将文件夹名作为参数传递时,节点是否在此文件夹内搜索文件index.js?简短的回答是,是 详细回答:package.json由识别。只要您的机器上安装了npm,您就可以使用它来完成许多事情,例如安装NodeJS模块,但您也可以使用它来运行小脚本/命令。这些命令必须添加到package.json中的scrip
package.json
中,有一个脚本定义为“start”:节点服务器(服务器是包含index.js文件的文件夹的名称)
这条线到底是干什么的?当我们将文件夹名作为参数传递时,节点是否在此文件夹内搜索文件index.js
?简短的回答是,是
详细回答:package.json
由识别。只要您的机器上安装了npm,您就可以使用它来完成许多事情,例如安装NodeJS模块,但您也可以使用它来运行小脚本/命令。这些命令必须添加到package.json
中的scripts
字段下。要运行这些命令,请调用npm run
。此功能是为了方便起见,与包管理没有任何关系。也就是说,这里有一些可用的钩子,在将包发布到时会调用这些钩子(稍后将详细介绍)
当导入任何文件夹时,NodeJS将搜索并导入index.js
(这里的节点可能正在使用CommonJS,但我100%不确定)。因此,在您的示例中,通过调用npm start
,您正在调用npm,它正在调用运行server/index.js
的node server
。您可以在这里调用任何您想要的东西,例如,您可以通过创建脚本“my script”:“my script.sh”
,然后通过npm调用npm run my script
来启动shell脚本。这是一个简单的示例,但不是一个非常有用的示例—npm脚本的出现是因为您需要定期运行复杂的命令
例如,可以使用不同的命令来运行具有不同上下文的程序:
{
“脚本”:{
“开始”:“设置节点\u ENV=development&&webpack--watch”,
“干净”:“rimraf区”,
“构建生产”:“设置节点\u ENV=production&&npm run clean&&webpack”,
“部署”:“sam部署”
}
}
npm启动
用于开发
npm运行构建生产
打包生产构建
npm运行deploy
将代码部署到服务器
请注意,在上一段中,我只是简单地使用了npm start
,而不是前面所述的npm run start
——有一些保留的脚本名称具有额外的功能,请参阅页面了解完整的详细信息。简短的回答是,是的
详细回答:package.json
由识别。只要您的机器上安装了npm,您就可以使用它来完成许多事情,例如安装NodeJS模块,但您也可以使用它来运行小脚本/命令。这些命令必须添加到package.json
中的scripts
字段下。要运行这些命令,请调用npm run
。此功能是为了方便起见,与包管理没有任何关系。也就是说,这里有一些可用的钩子,在将包发布到时会调用这些钩子(稍后将详细介绍)
当导入任何文件夹时,NodeJS将搜索并导入index.js
(这里的节点可能正在使用CommonJS,但我100%不确定)。因此,在您的示例中,通过调用npm start
,您正在调用npm,它正在调用运行server/index.js
的node server
。您可以在这里调用任何您想要的东西,例如,您可以通过创建脚本“my script”:“my script.sh”
,然后通过npm调用npm run my script
来启动shell脚本。这是一个简单的示例,但不是一个非常有用的示例—npm脚本的出现是因为您需要定期运行复杂的命令
例如,可以使用不同的命令来运行具有不同上下文的程序:
{
“脚本”:{
“开始”:“设置节点\u ENV=development&&webpack--watch”,
“干净”:“rimraf区”,
“构建生产”:“设置节点\u ENV=production&&npm run clean&&webpack”,
“部署”:“sam部署”
}
}
npm启动
用于开发
npm运行构建生产
打包生产构建
npm运行deploy
将代码部署到服务器
请注意,在上一段中,我只是简单地使用了npm start
,而不是前面所述的npm run start
——有一些保留的脚本名称具有额外的功能,请参阅页面了解完整的详细信息。当找不到确切的文件时,Node将进行有限的搜索
在将服务器
作为节点
的“script”参数提供的情况下:
第一个节点
将尝试打开名为服务器
的文件
如果未找到,则它将查找server.js
,server.json
,然后查找server.node
如果这些不存在且参数为目录,node
将尝试打开并server/index.js
,server/index.json
然后server/index.node
第一场比赛获胜
$ strace -e stat node server
当找不到确切的文件时,节点将执行有限的搜索
在将服务器
作为节点
的“script”参数提供的情况下:
第一个节点
将尝试打开名为服务器
的文件
如果未找到,则它将查找server.js
,server.json
,然后查找server.node
如果这些不存在且参数为目录,node
将尝试打开并server/index.js
,server/index.json
然后server/index.node
第一场比赛获胜
$ strace -e stat node server
谢谢你详细的回答。我的问题更多的是关于命令节点服务器,而不是关于npm脚本的更一般的用例。我想知道当node命令的参数为actua时node查找什么