首页 > 解决方案 > 在不全局安装的情况下将命令分配给我的 NPM 包

问题描述

一些 NPM 包被安装到一个项目中,然后你可以从你的项目中运行它们scripts

这方面的一个例子是webpack-dev-server

安装后,我只需要添加:

"dev": "webpack-dev-server"

在我的package.json脚本中,它将启动webpack-dev-server.

这是如何运作的?该命令未全局安装,但我的 Node 项目知道它已连接到我已安装的包。

我只能找到有关将我的命令添加到bin我的包中的属性的信息package.json,但除非包是全局安装的,否则这将不起作用。

我如何实现这一目标?是否有我无法找到的官方文档?

标签: node.jsnpm

解决方案


你是对的,但你错过了一些小东西......

每个包都可以声明一个二进制文件。正如你所说,这是binpackage.json

在安装时,npm 会将该文件符号链接到 prefix/bin 用于全局安装,或 ./node_modules/.bin/ 用于本地安装。

这正是这样webpack-dev-server做的。它的二进制文件被安装在./node_modules/.bin/.

由于约定,npm\npx 能够找到二进制文件并执行它。

在您的应用程序中,您可以利用此行为;并且任何依赖于您的包的包都将能够执行您的包二进制文件。

如果您想为运行脚本提供参数,请这样做

npm run webpack-dev-server -- --version

推荐阅读