Node.js 在不同项目之间共享节点单元模块

Node.js 在不同项目之间共享节点单元模块,node.js,angular,node-modules,Node.js,Angular,Node Modules,我正在开发各种Angular 2项目,我想在多个项目之间共享node_modules文件夹。我想创建一个这样的结构: MainFolder - Project1 - Project2 - package.json 因此,对于所有项目,我只有1个package.json。我的回答是:有可能做到这一点吗? 如果可能,我必须用-g安装npm? 我不明白-g是如何工作的。 有人能告诉我如何进行吗? 非常感谢 我忘了说我使用angular cli构建项目。是关于各种npm安装参数的文档 在全局模式下(即

我正在开发各种Angular 2项目,我想在多个项目之间共享node_modules文件夹。我想创建一个这样的结构:

MainFolder
- Project1
- Project2
- package.json
因此,对于所有项目,我只有1个package.json。我的回答是:有可能做到这一点吗? 如果可能,我必须用
-g
安装npm? 我不明白
-g
是如何工作的。 有人能告诉我如何进行吗? 非常感谢

我忘了说我使用angular cli构建项目。

是关于各种npm安装参数的文档

在全局模式下(即在命令后面附加-g或--global),它 安装当前程序包上下文(即当前工作包) 目录)作为全局包

可以找到基于环境的-g安装位置

实现所需的一种方法是为两个项目提供一个解决方案,每个项目路线使用自己的解决方案


除非您有共享资源的特定业务需求,否则最好将每个项目与其自己的资源和配置分开

-g代表全局安装,即您安装的软件包可用于所有应用程序

为什么要共享node_模块和package.json文件

为每个单独的项目将它们分开。如果需要共享项目,可以共享package.json,而不是共享node_modules文件夹


还要指出的是,如果您通过列出程序包的名称手动安装程序包,那么您可以使用-g(global)标志,但是如果您只使用
npm install
,那么您的程序包将不会作为全局程序包安装。

对于小型/学习/测试项目,我将其称为“git项目”。基本上,我通过git管理各种项目,只是“加载”我想处理的项目。当然,如果您想同时访问多个项目,这是行不通的

为此,我喜欢使用git客户端,因为它更容易可视化我现有的“项目”

所以我的工作流程是

  • 创建我的主/基本文件夹。这将包含git repo、单节点_模块文件夹以及所有项目所共有的任何其他内容
  • 我创建了basic package.json文件(使用
    npm init
    )。没有描述,没有任何内容,只有基本的skeleton package.json文件。(但是,如果您知道您将在所有项目中使用某些软件包,您可以先安装它们,这样它们将作为“基本”模块添加到package.json中。)
  • 现在,我将bare package.json签入repo(以及所有项目中可能需要的任何其他文件,但通常只是package.json文件)。这将是所有项目的基本起始分支
  • 签入后,我在git回购中创建了一个分支。这将是“项目1”-或任何你想叫它。然后按照您的意愿构建您的项目,安装模块,签入更改,等等
  • 当我想开始一个新项目时,我只需签出第一个裸体项目(它只是一个空的,或者几乎是空的package.json文件),然后再进行另一个分支。这将是我的第二个项目
  • 等等

    因此,最重要的是,每个新的“项目”都将是git回购协议中的一个新分支,要创建一个新项目,只需切换回原来的基本项目,并从中进行一个新分支

    当然,也可以在项目中创建分支。这都是关于命名约定的。例如,您可以在一个新的项目分支前面加上“P_”或“project_”等前缀,这样您就可以在git客户机中快速判断哪些分支是项目。当然,如果您只需要现有项目中的新分支,请使用不同的命名方案。我基本上就是这样做的


    您可能不喜欢此工作流,但这样我就不需要全局安装软件包。当我做备份时,我可以简单地删除单个(可能是巨大的)node_modules文件夹。只需签出特定项目的分支并在其package.json上运行“
    npm install
    ”,即可重新安装所有与项目相关的模块。希望它有意义。

    如果它真的只是为了测试简单的应用程序,可以通过某种方式重命名应用程序文件夹提供解决方案。它假设所有依赖项都是相同的,或者至少是提供的依赖项的子集。

    您尝试过吗?我尝试过在Main文件夹中安装npm-g,但要运行Project1,我还需要在Project1文件夹中安装npm?因为我无法运行Project1…我应该共享node_modules文件夹,以避免在每个项目中都有此文件夹。如果我在不同的项目中使用相同的package.json并运行npm安装,我会在每个项目中使用相同的node_模块吗?如果在每个项目中运行npm安装,那么是的,在每个项目中使用相同的node_模块。但是,每个项目都应该有一个单独的node_模块,就像您开始测试新事物一样,您必须为每个项目维护单独的package.json。这是合乎道德的方法,因此更好的方法是为每个项目保留一个package.json,并在每个文件夹中启动npm安装,即使这将生成相同的node_modules文件夹。这是正确的吗?是的,正确而且合乎道德。无论何时安装任何软件包,npm都会为自己保存一个对它的引用;所以,如果您有网络问题,您不需要internet为每个项目安装软件包;)