假设我不想在node_modules中安装我的本地(每个项目)软件包 - 我想将它放在sources/node_modules
而不是node_modules
下。是否可以像在凉亭中那样覆盖它?
在bower中,您使用.bowerrc
选项提供directory
文件,请参阅docs。它就像你有bower_components locally
一样 - 没有额外的文件,加载器,什么都没有 - 只是容器目录不同。
答案 0 :(得分:0)
$ 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/
时,它还会在package.json
文件夹中查找sources/
。如果这对你有用,那就太好了。
我发现将package.json
保留在项目根目录并在其他地方安装节点模块的唯一方法是将本地package.json
符号链接到该目录中:
$ mkdir -p sources
$ ln -s package.json sources/package.json
$ npm install --prefix sources
正如您所提到的,您可能希望您的脚本能够要求正常的模块 - require('my-module')
而不是require('sources/my-module')
。
The NODE_PATH
environment variable可以在这里提供帮助:
$ export NODE_PATH=`pwd`/sources/node_modules
$ node -e "require('my-module')" # Success
有一个重要的警告:node
将按特定顺序查找模块:
node_modules
文件夹中node_modules
文件夹中,然后是其父目录等。NODE_PATH
的路径中,如果尚未找到模块所以要小心,当前或任何父目录中没有任何其他node_modules
文件夹提及您的模块,或者事情可能会让人感到困惑。
答案 1 :(得分:0)
在您的根目录中创建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