提问者:小点点

在不全局安装的情况下为我的NPM包分配命令


一些NPM包安装到项目中,然后您可以从项目脚本运行它们。 这方面的一个例子是webpack-dev-server

一旦安装,我只需要添加:

    "dev": "webpack-dev-server"

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

这是怎么运作的? 该命令没有全局安装,但我的节点项目知道它已连接到我安装的包。

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

我如何实现这一点? 是不是有什么官方文件我找不到?


共1个答案

匿名用户

你说得对,但你错过了一件小事。。。

每个包都可以声明一个二进制文件。 正如您所说的,这是在package.jsonbin属性中完成的

在安装时,npm将该文件符号链接到前缀/bin(对于全局安装)中,或符号链接到./node_modules/.bin/(对于本地安装)中。

这正是webpack-dev-server所做的。 其二进制文件安装在./node_modules/.bin/内。

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

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

如果要为运行脚本提供参数,请按如下方式操作

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