在不同项目之间共享node_modules

时间:2017-09-28 13:21:04

标签: node.js angular node-modules

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

MainFolder
- Project1
- Project2
- package.json

所以我只有1个package.json用于所有项目。我的回答:有可能这样做吗? 如果可能的话,我必须与npm install共进午餐-g? 我无法理解-g的工作原理。 有人能给我指示如何继续吗? 非常感谢

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

4 个答案:

答案 0 :(得分:1)

我为小型/学习/测试项目解决这个问题的方法是(我称之为)" git projects"。基本上我通过git管理各种项目,只是" load"我想要的项目。当然,如果您想同时访问多个项目,这不起作用。

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

所以我的工作流程就是这个......

  1. 创建我的主/基本文件夹。这将包含git repo,单个node_modules文件夹以及所有项目应该共有的任何其他内容。
  2. 我创建了基本的package.json文件(使用npm init)。没有描述,没有什么,只是基本的框架package.json文件。 (但是,如果你知道你将在所有项目中使用某些软件包,你可以先安装它们,这样它们就会被添加到package.json作为你的" base"模块。)
  3. 现在我将bare package.json检查到repo(以及您在所有项目中可能想要的任何其他内容,但通常它只是package.json文件)。这将是所有项目的开始分支。
  4. 一旦签入,我在git repo中创建了一个分支。这将是"项目1" - 或者你想要的任何东西。然后根据需要构建项目,安装模块,检查更改等等。
  5. 当我想要开始一个新项目时,我只是查看第一个裸骨项目(它只是空的,或几乎是空的,package.json文件)并从中做另一个分支。这将是我的第二个项目。
  6. 等等......

    所以最重要的是每个新的"项目"将成为git repo中的一个新分支,并创建一个新项目,只需切换回原来的一个分支,并从中做一个新的分支。

    当然也可以在项目中创建分支。它完全与命名约定有关。例如,您可以使用" P _"为新项目分支添加前缀。或者" PROJECT _"等,这样你就可以快速告诉你的git客户端哪些分支是项目。当然,如果您只需要在现有项目中使用新分支,则使用不同的命名方案。这基本上就是我如何去做的。

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

答案 1 :(得分:0)

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

  

在全局模式下(即,使用-g或--global附加到命令),它   安装当前的包上下文(即当前工作   directory)作为全局包。

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

您可以实现目标的一种方法是为两个项目提供一个解决方案,每个项目路线使用它自己的lazy loaded module

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

答案 2 :(得分:0)

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

为什么要共享node_modules和package.json文件?

为每个单独的项目保持独立。如果您需要共享项目,可以共享package.json而不是共享node_modules文件夹。

另外要指出的是,如果您通过列出其名称来手动安装软件包,那么您可以使用-g(全局)标志,但如果仅使用npm install,那么您的软件包将不会作为全局安装包。

答案 3 :(得分:0)

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