Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js/npm-覆盖本地默认模块目录(node\u模块)_Javascript_Node.js_Npm_Bower_Npm Install - Fatal编程技术网

Javascript node.js/npm-覆盖本地默认模块目录(node\u模块)

Javascript node.js/npm-覆盖本地默认模块目录(node\u模块),javascript,node.js,npm,bower,npm-install,Javascript,Node.js,Npm,Bower,Npm Install,假设我不想在node_模块中安装我的本地(每个项目)软件包-我希望它位于sources/node_modules下,而不仅仅是node_modules。是否可以像在鲍尔一样覆盖它 在bower中,您提供带有目录选项的.bowerrc文件,请参阅。它的工作原理就像您在本地拥有bower\u组件一样——没有额外的文件、加载程序,什么都没有——只是容器目录不同而已。tl;博士 解释 您可以(如@adeneo所述)简单地将软件包安装到任何文件夹,其中包括: $ npm install --prefix

假设我不想在node_模块中安装我的本地(每个项目)软件包-我希望它位于
sources/node_modules
下,而不仅仅是
node_modules
。是否可以像在鲍尔一样覆盖它

在bower中,您提供带有
目录
选项的
.bowerrc
文件,请参阅。它的工作原理就像您在本地拥有
bower\u组件一样
——没有额外的文件、加载程序,什么都没有——只是容器目录不同而已。

tl;博士 解释 您可以(如@adeneo所述)简单地将软件包安装到任何文件夹,其中包括:

$ npm install --prefix sources/ my-package
这将安装到
sources/my-package
。然而,这种解决方案在两个方面远远不够整洁:

package.json 听起来,与其安装单个软件包,不如将
package.json
中的所有内容安装到
sources/
文件夹中。问题是,当您执行
npm安装--prefix sources/
时,它还会在
sources/
文件夹中查找
package.json
。如果这对你有用,那就太好了

我发现在项目根目录中保存
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')

您可以在此提供帮助:

$ export NODE_PATH=`pwd`/sources/node_modules
$ node -e "require('my-module')"  # Success
有一个重要的警告:
节点
将按特定顺序查找模块:

  • 在本地目录的
    节点\u modules
    文件夹中
  • 在父目录的
    节点\u modules
    文件夹中,然后是其父目录等
  • 节点的路径中\u PATH
    ,如果尚未找到模块

  • 因此,请注意,当前目录或任何父目录中没有任何其他提到您的模块的
    节点\u模块
    文件夹,否则事情可能会变得非常混乱。

    在根目录中创建本地\u模块,并添加package.json“@amazon/product module”:“文件:local\u modules/@amazon/product module”


    现在进行npm更新,您将把本地的_modules/@amazon/product module文件放入node_module/@amazon/product module

    当然,只需执行
    npm安装--prefix/sources/node_modules
    或创建一个symlink@adeneo嗯,是的,我发现了,抱歉不提这个。关于你的建议-那些只调用
    require
    的文件会像标准
    节点(模块)
    一样使用这些包吗?如果你使用
    require('/sources/node(模块)
    的话,它们会被使用吗,可能还有一个替代项您还可以创建一个环境变量标志,并像这样使用它:
    require(process.env.MY_flag | |“MY_module”)
    
    $ export NODE_PATH=`pwd`/sources/node_modules
    $ node -e "require('my-module')"  # Success
    
    file structure
    local_modules
       @amazon (folder)
         product-module (folder)
           [add your file which overrides]