[英]Is there a way to get npm install to install "bin" executables in the local node_modules directory (the .bin directory)?
[英]node.js / npm - override local default modules directory (node_modules)
假设我不想将我的本地(每个项目)软件包安装在node_modules中-我希望将其安装在sources/node_modules
而不仅仅是node_modules
。 是否有可能像在凉亭中那样覆盖它?
在bower中,您可以为.bowerrc
文件提供directory
选项,请参阅docs 。 它的工作原理就好像您在bower_components locally
拥有bower_components locally
-没有其他文件,加载程序,什么也没有-只是容器目录有所不同。
$ mkdir -p sources
$ ln -s package.json sources/package.json
$ npm install --prefix sources/
$ export NODE_PATH="`pwd`/sources"
您可以(如@adeneo所述)简单地通过以下方式将软件包安装到任何文件夹:
$ npm install --prefix sources/ my-package
这将安装到sources/my-package
。 但是,此解决方案在两个方面远非整洁:
听起来,不是要安装单个软件包,而是要将package.json
中的所有内容都安装到sources/
文件夹中。 问题在于,当您执行npm install --prefix sources/
,它还会在sources/
文件夹中寻找package.json
。 如果这对您有用,那就太好了。
我发现将package.json
保留在项目根目录中并在其他位置安装节点模块的唯一方法是将本地package.json
符号链接到该目录:
$ mkdir -p sources
$ ln -s package.json sources/package.json
$ npm install --prefix sources
如您所提到的,您可能希望脚本能够需要类似于normal的模块require('my-module')
而不是require('sources/my-module')
。
NODE_PATH
环境变量可以在这里提供帮助:
$ export NODE_PATH=`pwd`/sources/node_modules
$ node -e "require('my-module')" # Success
有一个重要的警告: node
将按特定顺序查找模块:
node_modules
文件夹中 node_modules
文件夹中,然后在其父目录中。 NODE_PATH
路径中,如果尚未找到该模块 因此请注意,当前目录或父目录中没有其他任何提到您的模块的node_modules
文件夹,否则可能会造成混乱。
在您的根目录中创建local_modules并添加package.json“ @ amazon / product-module”:“ file:local_modules / @ amazon / product-module”,
file structure
local_modules
@amazon (folder)
product-module (folder)
[add your file which overrides]
现在进行npm更新,您将把local_modules / @ amazon / product-module文件放入node_module / @ amazon / product-module
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.