从命令行运行 Node.js 脚本
运行 Node.js 程序的常用方法是运行全局可用的 node
命令(一旦你安装了 Node.js),并传递你要执行的文件的名称。
如果你的主要 Node.js 应用程序文件是 app.js
,你可以通过输入以下内容来调用它
node app.js
上面,你显式地告诉 shell 使用 node
运行你的脚本。 你也可以使用 "shebang" 行将此信息嵌入到你的 JavaScript 文件中。"shebang" 是文件中的第一行,它告诉操作系统使用哪个解释器来运行该脚本。 以下是 JavaScript 的第一行
#!/usr/bin/node
上面,我们显式地给出了解释器的绝对路径。 并非所有操作系统都在 bin 文件夹中都有 node
,但所有操作系统都应该有 env
。 你可以告诉操作系统以 node 作为参数运行 env
#!/usr/bin/env node
// your javascript code
要使用 shebang,你的文件应该具有可执行权限。 你可以通过运行以下命令来赋予 app.js
可执行权限
chmod u+x app.js
运行该命令时,请确保你位于包含 app.js
文件的同一目录中。
将字符串作为参数传递给 node
而不是文件路径
要将字符串作为参数执行,你可以使用 -e
, --eval "script"
。 将以下参数评估为 JavaScript。 REPL 中预定义的模块也可以在脚本中使用。
在 Windows 上,使用 cmd.exe 时,单引号将无法正常工作,因为它只识别双引号 "
用于引用。 在 Powershell 或 Git bash 中,'
和 "
都是可用的。
node -e "console.log(123)"
自动重启应用程序
从 Node.js V16 开始,有一个内置选项可以在文件更改时自动重启应用程序。 这对于开发目的很有用。 要使用此功能,你需要将 --watch
标志传递给 Node.js。
node --watch app.js
因此,当你更改文件时,应用程序将自动重启。 阅读 --watch
标志文档。
使用 Node.js 运行任务
Node.js 提供了一个内置的任务运行器,允许你执行 package.json
文件中定义的特定命令。 这对于自动化重复性任务(例如运行测试、构建项目或检查代码)特别有用。
使用 --run
标志
--run
标志允许你从 package.json
文件的 scripts
部分运行指定的命令。 例如,如果你有以下 package.json
{
"type": "module",
"scripts": {
"start": "node app.js",
"dev": "node --run -- --watch",
"test": "node --test"
}
}
你可以使用 --run
标志运行 test
脚本
node --run test
将参数传递给命令
让我们解释一下 package.json
文件的 scripts
对象中的 dev
键。
语法 -- --another-argument
用于将参数传递给命令。 在这种情况下,--watch
参数被传递给 dev
脚本。
node --run dev
环境变量
--run
标志设置了特定的环境变量,这些变量对你的脚本可能很有用
NODE_RUN_SCRIPT_NAME
: 正在运行的脚本的名称。NODE_RUN_PACKAGE_JSON_PATH
: 正在处理的package.json
文件的路径。
有意限制
与其他任务运行器(如 npm run
或 yarn run
)相比,Node.js 任务运行器在有意设计上更加受限。 它侧重于性能和简洁性,省略了运行 pre
或 post
脚本等功能。 这使其适用于简单的任务,但可能无法涵盖所有用例。