如何在npm run执行TypeORM脚本时保留命令行标志?
解决npm脚本中传递参数(含标志)的问题
这是npm脚本使用中很常见的小坑!当你直接执行npm run typeorm migration:create -n Example时,npm会把-n这类选项当成npm自身的参数处理,而不是传递给你配置的typeorm脚本,所以才会出现参数被移除的情况。
核心解决方法:使用双破折号--分隔参数
npm提供了--语法,用来明确告诉它:--之后的所有内容都要原封不动传递给目标脚本,不要自己处理。
你只需要把执行命令改成这样:
npm run typeorm -- migration:create -n Example
此时实际执行的命令就会是你期望的:
ts-node ./node_modules/typeorm/cli.js migration:create -n Example
进阶优化:封装专用脚本(可选)
如果经常需要执行这类命令,你可以在package.json的scripts里单独封装一个快捷脚本,避免每次都输入--:
"scripts": { "typeorm": "ts-node ./node_modules/typeorm/cli.js", "migrate:create": "npm run typeorm -- migration:create -n" }
之后创建迁移的时候,只需要执行:
npm run migrate:create Example
这样用起来更简洁,也不容易出错。
补充说明
不同包管理器的参数传递逻辑略有差异,但--是npm的标准用法,只要遵循这个规则,所有带标志(比如-n、--name)的参数都能正确传递给目标脚本。
内容的提问来源于stack exchange,提问作者curious lad




