当前位置: 首页 > 知识库问答 >
问题:

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

双恩
2023-03-14

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

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

    "dev": "webpack-dev-server"

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

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

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

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

共有1个答案

仲孙铭
2023-03-14

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

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

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

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

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

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

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

npm run webpack-dev-server -- --version
 类似资料:
  • 问题内容: 我已经通过命令行在全球范围内安装了两个npm软件包“下载”和“ enigmavirtualbox” : 和 我试图在批处理文件中使用它们,以从我的节点项目中捆绑一个.exe文件。对于这两种命令,这些命令都会产生各自的版本输出,而与当前工作目录无关。 但是,在我的批处理脚本中,找不到命令“下载”和“ enigmavirtualbox”。 运行yield 并查看该文件夹的内部,我可以看到两

  • 我已经通过命令行在全球范围内安装了两个npm软件包“下载”和“enigmavirtualbox”: 和 我正试图在批处理文件中使用它们来捆绑单个文件。我的节点项目中的exe文件。对于这两个命令,命令

  • 我想在全球范围内安装npm模块,但不建议使用:这个问题:npm/yeoman在没有sudo的情况下安装generator angular是解决方案。 我跟着这个 并将其添加到我的文件中 现在我必须安装一个全局模块,例如 但是我仍然收到一个错误,并且正如我读到的日志所示,npm似乎仍然在将全局模块安装到而不是

  • 我们有一个包含一些VC++项目的Visual Studio解决方案,目前我们已经从VS2010升级到Visual Studio 2012。在此过程中,我们还将VC++项目提升到PlatformToolsetV110。 是否有任何其他SDK或安装包可以帮助解决此问题?

  • 问题内容: 我写了一个模块,我刚才将其发布到npm(https://npmjs.org/package/wisp) 因此,可以从命令行进行安装: 但是,当我从命令行运行它时,我不断收到未安装乐观主义者的错误消息: 但是,我在package.json中指定了依赖性: 有谁知道该怎么做才能使它运行?我知道它与bin部分有关,将可执行文件添加到bin中,该目录中的node_modules为空。不知道如何

  • 我写了一个模块,不久前发布到npm(https://npmjs.org/package/wisp) 所以它可以从命令行安装: 但是,当我从命令行运行它时,我不断收到一个错误,即未安装optimist: 但是,我在package.json中指定了依赖项: 有人知道该怎么做才能让它运行吗?我知道这与bin部分将可执行文件添加到bin以及该目录中的node_模块为空有关。不知道如何解决这个问题。

  • 问题内容: 我不确定100%,但是我相信我是从家用计算机和办公室PC上的Windows安装程序安装了节点v5。 在我的家用PC上,全局安装发生在%APPDATA%下: 在我的办公室PC上,它们位于程序文件下: 我需要为PyCharm的文件监视程序提供许多这些全局工具的完整路径,并且由于我共享的项目文件很有意义,因此在用户文件夹下没有全局资源。 为什么全局安装最终会位于不同的文件夹中,我如何将它们强

  • 这是在卸载和并使用重新安装之后开始的。我想知道在卸载时是否遗漏了什么,是它导致了这个问题。我检查了我的点文件,注意到在之外还有一个。这正常吗?提前感谢您的任何建议。