NPM:更改节点模块的“bin”输出目录

目前,如果您使用package.json文件来pipe理项目的依赖项(无论是./node_modules项目,可能是ruby,php,python或js应用程序),默认情况下,所有项都安装在./node_modules下。

当某些依赖关系有二进制文件保存时,它们被安装在./node_modules/.bin下。

我需要的是一个function,允许我更改./node_modules/.bin目录。

简单的例子:

PHP / Symfony应用程序的Composer依赖项具有./vendor目录,并且所有的二进制文件都保存在./bin ,这要归功于./bin中的config: { bin-dir: bin }选项。

但是如果我想用Gulp来pipe理我的资产,我创build一个package.json文件,需要我所有的依赖,然后运行npm install 。 然后,我希望运行bin/gulp node_modules/.bin/gulp来执行node_modules/.bin/gulp ,但实际上我必须运行node_modules/.bin/gulp ,它不像bin/gulp node_modules/.bin/gulp那么友好。

我在browsenpm.org和docs.npmjs.com上看过了package.json的例子/指南,但是没有一个能够工作,因为他们在这里定义你自己的项目的二进制文件。 但我没有任何二进制文件,因为我想使用其他库的二进制文件。

有NodeJS / NPM的选项吗?

你可能会考虑在你的package.json添加gulp任务。

 // package.json { "scripts": { "build-templates": "gulp build-templates", "minify-js": "gulp minify-js" } } 

您只需运行以下命令即可运行package.json指定的任何脚本:

$ npm运行build-templates
$ npm运行minify-js

你明白了。 您可以在string中使用./node_modules/.bin/gulp命令,而无需执行./node_modules/.bin/gulp因为npm足够聪明,可以将./node_modules/.bin/所有脚本放入该脚本执行的path中。