npm scripts 里怎么传参数给 Node 脚本?

树灿 阅读 25

我在 package.json 里写了自定义脚本,想传参数进去,但试了几次都不对。比如我想运行一个构建脚本并指定环境,像这样:npm run build --mode=prod,但脚本里拿不到这个 mode 参数。

我试过用 process.argv 去读,但输出的数组里只有 node 和脚本路径,后面跟的参数没出现。是不是写法有问题?

console.log('args:', process.argv);
// 执行 npm run build -- --mode=prod 后
// 输出: ['node', '/path/to/build.js'],后面的 --mode=prod 没了?
我来解答 赞 5 收藏
二维码
手机扫码查看
2 条解答
皇甫馨然
通用的做法是在参数前面加两个连字符 --,这样 npm 才能正确传递参数给 node 脚本。你的写法其实已经接近正确了。

在 package.json 里定义脚本:
{
"scripts": {
"build": "node build.js"
}
}


然后运行时要用这种格式:
npm run build -- --mode=prod

在 build.js 里用 process.argv 去读取参数:
const args = process.argv.slice(2);
console.log('args:', args);

// 解析参数
const params = {};
args.forEach(arg => {
const [key, value] = arg.split('=');
params[key.replace('--', '')] = value;
});

console.log('params:', params);


这样就能拿到 { mode: 'prod' } 了。记得把参数前面的 -- 也去掉,不然 key 会带着 -- 这个前缀。

这玩意搞了好几次才记住,每次都要试一下才敢用,真够呛。不过现在基本都靠这个方式传参了。
点赞
2026-03-29 18:12
シ艳丽
シ艳丽 Lv1
你得在双破折号后面加参数,试试这样:npm run build -- --mode=prod。然后用 process.argv 读取,应该就能看到你的参数了。差不多就行。
点赞
2026-03-24 13:30