node.js - 可以在没有全局安装的情况下在 Node 模块中包含命令行吗?

标签 node.js path command-line-interface npm

我有一个小型 Node 模块,它在 bin 目录中包含一个命令行脚本。

    "bin": {
        "generate": "./bin/generate.js"
    }

generate.js 脚本可以正常执行。

如果我运行 npm install -g,一切正常。但我不希望全局安装,只让命令 generate 从模块文件夹中工作。如果我从模块文件夹运行 npm install,它会在 node_modules 子目录中正确安装所有依赖项。但是然后 generate 从命令中给我“没有这样的文件或目录”。

谢谢。

最佳答案

我从不使用 -g 安装 Node 模块。我对您的问题的解决方案是将其添加到我的 $PATH

# add this to ~/.bashrc, ~/.zshrc, or ~/.profile, etc
export PATH="./node_modules/.bin:$PATH"

现在,只要您在模块的根目录下,就可以访问任何已作为模块安装的二进制文件。


例如,less 通常安装有

npm install -g less

但是,如果您按上述方式修改了 PATH,则可以这样

cd my_node_module
npm install --save less
lessc less/style.less css/style.css

如果没有 PATH 修改,你会看到

command not found: lessc

如果你不想改变你的 PATH,你可以直接访问二进制文件

cd my_node_module
npm install --save lessc
./node_modules/.bin/lessc a.less a.css

是的,不再是 npm install -g ...

关于node.js - 可以在没有全局安装的情况下在 Node 模块中包含命令行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181072/

相关文章:

php:设置项目的根目录?

java - 文本文件的 NetBeans Java 项目路径

接受多个参数的 Bash CLI

php - 如何在 Windows 上为 PHP CLI 设置默认的 php.ini 路径?

php - 如何在 phar 文件代码中获取 .phar 文件的真实目录?

node.js - sails 中的 disk.db 在哪里?

mysql - 如何使用 Sequelize 在我的时区存储正确的日期时间

python - 请参阅系统相关/用户路径,例如 "AppData"或 "MyDocuments"?

javascript - Node Mysql 库中的 SQL 注入(inject)

javascript - 为什么我不需要在 Sails.js Controller 函数中调用 next,即使它的主体中有一个(异步?)数据库查询?