无需添加yarn/npm前缀 能否直接运行package.json中定义的scripts命令
无需添加yarn/npm前缀直接运行scripts的实现方案
存在可落地的实现方式,以下是不同适用场景的具体方案:
方案1:临时/永久将项目可执行目录加入Shell环境变量
该方案不需要额外配置包或别名,适合在当前项目下快速使用:
- 临时生效(仅当前终端会话有效):
如果你使用bash/zsh,在项目根目录执行:export PATH="./node_modules/.bin:$PATH"
如果你使用fish,执行:set -x PATH ./node_modules/.bin $PATH - 永久生效(所有终端会话都生效):
将上面对应shell的export命令写入你的shell配置文件(比如~/.zshrc、~/.bashrc),保存后执行source 对应配置文件路径生效。
注意:该配置会优先执行当前工作目录下
node/.bin中的可执行文件,存在一定安全风险,建议仅在你信任的项目目录下使用
配置完成后,你就可以在项目根目录直接输入get [arguments]执行对应脚本。
方案2:配置Shell别名固定映射命令
如果你只需要快速执行某个特定项目的固定脚本,可以直接配置Shell别名,全局都可以调用:
- 打开你的shell配置文件(
~/.zshrc/~/.bashrc等),加入如下内容:alias get="yarn --cwd 你的项目根目录绝对路径 get" - 保存后执行
source 对应配置文件路径生效。
之后不管你在哪个目录下,输入get [arguments]都会自动执行对应项目的get脚本。
方案3:将脚本注册为全局可执行命令
如果你的index.js本身是可以全局复用的工具脚本,可以直接将其注册为全局命令:
- 在你的package.json中新增
bin配置:
{ "scripts": { "get": "node index.js" }, "bin": { "get": "./index.js" } }
- 在项目根目录执行
npm link,系统会自动将你的脚本注册为全局命令。
之后全局任意位置都可以直接输入get [arguments]执行对应脚本。
内容的提问来源于stack exchange,提问作者Sowam
相关产品推荐
相关产品推荐

