在不同的项目之间共享node_modules

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

MainFolder - Project1 - Project2 - package.json 

所以我将只有一个package.json所有的项目。 我的回答:可以这样做吗? 如果可能的话,我必须午餐npm install-g ? 我无法理解-g是如何工作的。 有人可以给我说明如何进行? 很感谢

我忘了说我用angular度来构build项目。

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

在全局模式(即将-g或–global附加到命令中)中,它将当前包上下文(即当前工作目录)作为全局包安装。

-g根据环境安装位置可以在这里find

一种方法,你可以达到你想要的是有一个解决scheme的两个项目和每个项目路线使用它自己的惰性加载模块 。

除非您有特定的业务需求来共享资源,否则最好将自己的资源和configuration分离开来。

我为小型/学习/testing项目做的这个方式是(我称之为)“git项目”。 基本上我通过git来pipe理各种项目,只是“加载”我想要的项目。 当然,如果你想同时访问多个项目,这是行不通的。

我喜欢使用git客户端来达到这个目的,因为它更容易将我现有的“项目”可视化。

所以我的工作stream程是…

  1. 创build我的主/基文件夹。 这将包含git repo,单个node_modules文件夹以及其他所有项目应该通用的其他内容。
  2. 我创build了基本的package.json文件(使用npm init )。 没有描述,没有什么,只是基本的骨架package.json文件。 (但是,如果你知道你将在你的所有项目中使用某些软件包,你可以先安装它们,这样它们将被添加到package.json中作为你的“基本”模块。)
  3. 现在,我将这个package.json放入repo(以及其他任何你可能想要的项目中,但通常只是package.json文件)。 这将是所有项目的基础。
  4. 一旦签入,我在git仓库中创build一个分支。 这将是“项目1” – 或者任何你想称之为的项目。 然后build立你的项目,无论你想要的,安装模块,检查更改等,等等。
  5. 当我想开始一个新的项目时,我只是简单地检查出第一个简单的项目(它只是空的,或者几乎是空的package.json文件),然后再做一个分支。 这将是我的第二个项目。

等等…

所以最主要的是每一个新的“项目”都将成为git仓库中的一个新的分支,为了创build一个新的项目,只需要切换回原来的基本框架,然后再做一个新的分支。

当然,也可以在项目中创build分支。 这完全是关于命名约定。 例如,你可以在“P_”或者“PROJECT_”等前缀一个新的项目分支,这样你就可以快速的告诉你的git客户端哪些分支是项目。 当然,如果您只需要在现有项目中使用新分支,就可以使用不同的命名scheme。 这基本上是我如何去做的。

你可能不喜欢这个工作stream程,但是这样我就不需要在全局安装包了。 当我做一个备份,我可以简单地删除单个(可能是巨大的)node_modules文件夹。 所有与项目相关的模块都可以通过简单地检查某个特定项目的分支来重新安装,并在其package.json上运行“ npm install ”。 希望这是有道理的。

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

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

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

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