如何在项目B的package.json脚本中直接调用npm包A的utils/a.js?
Got it!要在项目B的package.json脚本里直接调用项目A的a.js,其实很简单,分两步就能搞定——先把项目A的npm包配置好可执行脚本,再在项目B里写对应的命令:
步骤1:配置项目A的npm包
首先得让你的项目A的a.js能被当作可执行脚本调用,需要做两个小操作:
- 给
a.js添加shebang行:打开项目A的utils/a.js,在文件最顶部加上这一行:
这行代码会告诉系统用Node.js来执行这个文件。#!/usr/bin/env node - 在项目A的
package.json里配置bin字段:这个字段用来把你的脚本映射成一个可直接调用的命令。比如你可以这样写:
这里的{ "name": "project-a", "version": "1.0.0", // 其他字段(比如dependencies、main等)... "bin": { "execute-a": "./utils/a.js" } }execute-a是你自定义的命令名,后面的路径是a.js在项目A里的相对路径。如果想直接用项目A的包名作为命令,也可以简化成:"bin": "./utils/a.js" - (本地开发可选)如果还没发布npm包,想先本地测试的话:
- 在项目A的根目录执行
npm link,把本地包注册到全局 - 去项目B的根目录执行
npm link project-a,把本地的项目A链接到项目B的依赖中
- 在项目A的根目录执行
步骤2:在项目B里配置脚本
现在项目A的包已经配置好了,去项目B的package.json里添加脚本:
{ "name": "project-b", // 其他字段... "scripts": { "run-a": "execute-a" } }
这里的execute-a就是你在项目A的bin字段里定义的命令名。
之后你只要在项目B的根目录执行:
npm run run-a
就能直接调用项目A里的a.js啦!
备选方案(无需修改项目A配置)
如果暂时不想调整项目A的配置,也可以直接在项目B的脚本里用node命令指定路径:
"scripts": { "run-a": "node node_modules/project-a/utils/a.js" }
不过这种方式依赖node_modules里的固定路径,不如配置bin字段灵活优雅,更推荐第一种方法。
内容的提问来源于stack exchange,提问作者Yatin Kanyal
相关产品推荐
相关产品推荐

