13

我在安装 npm 时遇到问题

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

cd ~/projectA
npm install sails

但是安装后找不到sails命令。

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

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

我做错了什么吗?

4

8 回答 8

15

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

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

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

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

然后您可以使用它运行

npm run sails

或有论据

npm run sails -- <args>
于 2013-09-21T01:53:01.867 回答
13

您应该使用该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]

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

于 2014-06-25T20:22:51.750 回答
2

更强大的是:

export PATH=$(npm bin):$PATH

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

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

如果您确实使用别名路线,请务必使用单引号,这样会延迟变量的执行!

于 2015-12-03T17:03:40.930 回答
1

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

npm install -g sails

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

./node_modules/sails/bin/sails.js generate foo
于 2013-08-06T04:02:10.293 回答
1

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

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

sudo npm -g install sails

这会全局安装并添加到/usr/local/bin应该在您的$PATH.

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

于 2013-09-21T02:43:45.347 回答
0

如果你不想为了运行一个非全局的 npm 脚本而弄乱你的 PATH——例如,你是唯一使用它的人——我个人建议使用 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
于 2016-06-14T16:36:06.647 回答
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
于 2017-10-05T14:42:00.260 回答
-1

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

npx sails new test-project

有关类似的用例和优雅的解决方案,请参阅此问题。

于 2020-04-22T09:15:21.153 回答