用 node --run 直接跑 package.json 脚本

15 次浏览2 条回复

Node 新一点的项目里,可以不用每次都敲 npm run,直接用内置的 node --run 跑脚本。

环境:Node.js 22+,项目根目录有 package.json:

node --run test

它会去找 scripts.test 执行。比如常见的:

{
  "scripts": {
    "lint": "eslint ."
  }
}

就可以这样跑:

node --run lint

这个适合本机已经统一到新版 Node 的小项目,少一层包管理器命令。要是团队里 Node 版本不齐,还是老老实实写 npm run lint 更稳。

这个在 CI 里要稍微注意一下 Node 版本。

如果脚本本身还要依赖 npm 注入的一些环境变量,先用 node --run env 之类的小脚本看一下也比较稳。平时本地跑 lint、test 这种短命令确实省手指。

还有个小坑:node --run 目前更像是直接跑脚本名,不会顺手做安装/解析包管理器那套事。

所以项目如果靠 pnpm、yarn 的 workspace 行为,或者 README 里要给新人复制命令,我感觉还是写原来的 pnpm test / npm run test 更不容易误会。本地自己用别名倒是挺舒服。