一些NPM包安装到项目中,然后您可以从项目脚本
运行它们。 这方面的一个例子是webpack-dev-server
。
一旦安装,我只需要添加:
"dev": "webpack-dev-server"
在我的package.json脚本中,它将启动webpack-dev-server。
这是怎么运作的? 该命令没有全局安装,但我的节点项目知道它已连接到我安装的包。
我只能在包的package.json
中找到有关将命令添加到bin
属性的信息,但是除非包是全局安装的,否则这是行不通的。
我如何实现这一点? 是不是有什么官方文件我找不到?
你说得对,但你错过了一件小事。。。
每个包都可以声明一个二进制文件。 正如您所说的,这是在package.json
的bin
属性中完成的
在安装时,npm将该文件符号链接到前缀/bin(对于全局安装)中,或符号链接到./node_modules/.bin/(对于本地安装)中。
这正是webpack-dev-server
所做的。 其二进制文件安装在./node_modules/.bin/
内。
根据约定,npm\npx能够找到二进制文件并执行它。
在您的应用程序中,您可以利用这种行为; 并且依赖于您的包的任何包都将能够执行您的包二进制文件。
如果要为运行脚本提供参数,请按如下方式操作
npm run webpack-dev-server -- --version