NPM:如何获取./node_modules/.bin文件夹?

时间:2013-08-03 14:16:48

标签: node.js npm sails.js

我在npm安装时遇到问题

我创建了一个项目说项目A

cd ~/projectA
npm install sails

但安装后找不到sails命令。

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

每当我进入这个projectA文件夹时,如何自动获取.bin?

我做错了吗?

8 个答案:

答案 0 :(得分:15)

我可以给你一个不雅的解决方案,这对我有用。我只是在.bashrc文件中导出了我的路径。

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

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

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

然后您可以使用

运行
npm run sails

或带参数

npm run sails -- <args>

答案 1 :(得分:12)

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

例如:

➤ 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]

这可以避免相对路径的问题,特别是如果您要在将在子目录中调用命令的构建系统中使用它。

答案 2 :(得分:2)

更强大的是:

export PATH=$(npm bin):$PATH

您可以运行它,将其添加到您的shell配置文件中,也可以创建一个别名,如:

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

如果你去别名路线,一定要使用单引号,这样就会延迟执行变量!

答案 3 :(得分:1)

要在sails generate foo等命令行上使用,您需要全局安装npm模块。

npm install -g sails

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

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

答案 4 :(得分:1)

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

  

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

sudo npm -g install sails

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

但是要回答关于二进制文件在本地安装时的位置的一般问题,应将它们放在./node_modules/.bin目录中(这样运行./node_modules/.bin/sails ...

答案 5 :(得分:0)

如果您不想使用PATH来运行非全局的npm脚本 - 例如你是唯一一个使用它的人 - 我个人建议使用sh“alias”。

  1. npm install(本地)你心爱的包(例如json-diff)

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

    alias diffj "\`npm bin\`/json-diff !*"
    
  3. 然后,为了区分2个json:

    diffj old.json new.json
    

答案 6 :(得分:0)

在我的~/.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
}

然后我可以在foo目录中运行可执行文件.bin

nbin foo

答案 7 :(得分:-1)

使用npx命令在NPM 5.2+中可能的解决方法。

npx sails new test-project

有关类似的用例和简洁的解决方案,请参见http://localhost:4200/assets/contacts.json问题。