NPM:如何使用.node_modules.bin文件夹?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NPM:如何使用.node_modules.bin文件夹?相关的知识,希望对你有一定的参考价值。

我在安装npm时遇到了一个问题

我创建了一个项目,比如项目A

cd ~/projectA
npm install sails

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

我知道它已经成功安装在 ~/projectA/node_modules 目录,但无法找到可执行文件。而且我知道它是安装在 ~/projectA/node_modules/.bin

如何能让我每次进入这个projectA文件夹时,都能自动生成.bin的源码?

我是不是做错了什么?

答案

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

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

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

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

然后你可以用

npm run sails

或带参数

npm run sails -- <args>
另一答案

你应该使用 npm bin 命令来获取当前node 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]

这就避免了相对路径的问题,尤其是当你要在一个会在子目录中调用命令的构建系统中使用这个命令的时候。

另一答案

更强大一点的是。

export PATH=$(npm bin):$PATH

你可以运行它,把它添加到你的shell配置文件中, 或者创建一个别名,比如:

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

如果你采用别名的方式,一定要用单引号,这样会延迟变量的执行!

另一答案

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

npm install -g sails

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

./node_modules/sails/bin/sails.js generate foo
另一答案

sails的官方说明 (https:/github.combalderdashysails。)建议

用命令行工具安装最新的稳定版。

sudo npm -g install sails

这将在全球范围内安装,并添加到一个目录,如 /usr/local/bin 该在你 $PATH.

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

另一答案

如果你不喜欢因为运行一个非全局的npm脚本而弄乱你的PATH--比如你是唯一一个使用它的人--我个人建议使用sh "alias"。

  1. npm 安装(本地)你心爱的包(比如这里的 json-diff)。

    cd ~ && npm install json-diff
    
  2. 将其别名为(保存在你的 ~.xxxxrc 文件中)。

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

然后,对于两个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
}

我可以运行可执行文件 foo.bin 目录为。

nbin foo
另一答案

在NPM 5.2+中,可能的变通方法是使用 npx 命令。

npx sails new test-project

这个 问题的类似用例和优雅的解决方案。

以上是关于NPM:如何使用.node_modules.bin文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

Yarn 2:如何从 `node_modules/.bin` 目录运行脚本?

错误 npm failed with exit code 2 错误:命令失败:node_modules/.bin/vsce package --no-yarn

npm run 命令解析与node_modules .bin下的文件解析

npm 从父目录安装

修改Yarn和npm的全局安装和缓存位置

Vue 项目运行报错 node_modules/.bin/gulp: Permission denied