NPM:如何来源./node_modules/.bin文件夹?

我在安装npm时遇到问题

我已经创build了一个项目说项目A

cd ~/projectA npm install sails 

但安装后找不到sails命令。

我知道它已经成功安装在~/projectA/node_modules目录中。 但可执行文件无法find。 我知道它已经安装~/projectA/node_modules/.bin

当我进入这个projectA文件夹时,我怎样才能自动获取.bin文件?

我做错了吗?

我可以给你一个不错的解决scheme,这对我来说是很有用的。 我只是在我的.bashrc文件中导出我的path。

 export PATH="$PATH:./node_modules/.bin" 

编辑:这是一段时间,但我改变了我的策略,而不是使用npm脚本。 在上面的例子中,设置package.json如下:

 "scripts": { "sails": "sails" } 

然后你可以运行

 npm run sails 

或与论据

 npm run sails -- <args> 

您应该使用npm bin命令获取当前节点bin目录的绝对path。

例如:

 ➤ lessc bash: lessc: command not found ➤ npm bin /home/brice/[...]/node_modules/.bin ➤ export PATH=$(npm bin):$PATH ➤ lessc --version lessc 1.7.3 (Less Compiler) [JavaScript] 

这可以避免相对path的问题,特别是如果你打算在一个构build系统中使用它,这个系统将调用子目录中的命令。

要像命令行一样使用命令行sails generate foo您将需要在全局安装npm模块。

 npm install -g sails 

如果您不想全局安装,也可以在命令中使用bin的path:

 ./node_modules/sails/bin/sails.js generate foo 

官方的风帆说明( https://github.com/balderdashy/sails )build议

使用命令行工具安装最新的稳定版本:

 sudo npm -g install sails 

这将在全局安装并添加到/usr/local/bin目录中,该目录应位于$PATH

但是要回答关于二进制文件的位置的一般问题,如果你在本地安装,他们应该放在./node_modules/.bin目录中(所以运行./node_modules/.bin/sails ...

更强大一点是:

 export PATH=$(npm bin):$PATH 

您可以运行它,将其添加到您的shellconfiguration文件,或创build一个别名,如:

 alias snpm='export PATH=$(npm bin):$PATH' 

如果你走别名路线,一定要使用单引号,所以它延迟variables的执行!

如果你不喜欢用你的PATH来运行一个不是全局的npm脚本 – 比如你是唯一使用它的脚本 – 我个人推荐使用sh别名。

  1. npm安装(本地)你心爱的软件包(例如json-diff)

     cd ~ && npm install json-diff 
  2. 别名(保存在〜/ .xxxxrc文件中):

     alias diffj "\`npm bin\`/json-diff !*" 

然后,为了区分2个json的:

 diffj old.json new.json 

在我的~/.bashrc ,我有以下几点:

 function nbin { local dir; dir=$(npm bin) if [ -d "$dir" ]; then ( # subshell to not change this shell's $PATH PATH=$dir:$PATH eval "$@" ) else echo "\"$dir\" is not an npm binary directory." >&1 return 1 fi } 

然后,我可以在.bin目录中运行可执行文件foo ,如下所示:

 nbin foo