【发布时间】:2016-08-26 09:07:06
【问题描述】:
我在 npm 文档中看到您不能使用本地安装包的 bin 脚本。
那么,gulp 在本地安装时如何作为 bin 命令启动?
是什么使它在本地安装时可用,我查看了 gulp package.json 和 bin 脚本,但没有找到任何答案。
【问题讨论】:
-
如果您的问题得到解决,请将问题标记为已回答。否则,让我们知道什么还没有工作。
我在 npm 文档中看到您不能使用本地安装包的 bin 脚本。
那么,gulp 在本地安装时如何作为 bin 命令启动?
是什么使它在本地安装时可用,我查看了 gulp package.json 和 bin 脚本,但没有找到任何答案。
【问题讨论】:
要使用它,请在 package.json 中提供一个 bin 字段,它是命令名称到本地文件名的映射。安装时,npm 会将该文件符号链接到 prefix/bin 用于全局安装,或 ./node_modules/.bin/ 用于本地安装。
因此,您本地安装的软件包二进制文件将像这样执行
./bin/node_modules/.bin/the_binary
这是如果您想直接启动二进制文件。或者,在the scripts part of the documentation:中指定
除了 shell 预先存在的 PATH 之外,npm run 还将 node_modules/.bin 添加到提供给脚本的 PATH 中。
因此,您可以简单地编写一个包装脚本,如
scripts: {
"build": "the_binary"
}
然后像这样调用你的脚本
npm run build
奖金
从 npm@2.0.0 开始,您可以在执行脚本时使用自定义参数。 getopt 使用特殊选项 -- 来分隔选项的结尾。 npm 会将 -- 之后的所有参数直接传递给您的脚本:
npm run test -- --grep="pattern"
【讨论】:
gulp default bin 命令,而无需全局安装 Gulp。问题可能出在我的 bash_profile 中......我不知道为什么我可以运行 Gulp 而不是没有全局安装的自定义 bin 命令,并且您链接的文档似乎说这是完全正常的。
npm list -g 来查看全局安装了哪些软件包,运行which gulp 来查看二进制文件的位置。
您可以使用 lpx https://www.npmjs.com/package/lpx 来
如果本地找不到二进制文件,lpx不会下载任何包(即不像npx)
示例:lpx tsc -b -w 将使用本地 typescript 包运行 tsc -b -w
【讨论】: