在不同项目之间共享 node_modules
Share node_modules between different projects
我正在开发 Angular 2 个项目,我想在多个项目之间共享 node_modules 文件夹。我想创建这样的结构:
MainFolder
- Project1
- Project2
- package.json
所以对于所有的项目我只有 1 package.json。我的回答:可以这样做吗?
如果可能的话,我要和-g
一起吃午餐npm install
?
我无法理解 -g
是如何工作的。
有人可以给我指示如何进行吗?
非常感谢
我忘了说我用 angular-cli 构建项目。
Here 是关于各种 npm 安装参数的文档
In global mode (ie, with -g or --global appended to the command), it
installs the current package context (ie, the current working
directory) as a global package.
可以找到基于环境的-g安装位置here
实现您想要的目标的一种方法是为两个项目提供一个解决方案,并且每个项目路线都使用它自己的 lazy loaded module。
除非您有特定的业务需要共享资源,否则最好让每个项目独立使用自己的资源和配置。
-g代表全局安装,即你安装的包将对所有应用程序可用。
为什么要共享 node_modules 和 package.json 文件?
为每个单独的项目将它们分开。如果您需要共享您的项目,您可以共享您的 package.json 而不是共享 node_modules 文件夹。
还要指出的是,如果您通过列出名称手动安装软件包,那么您可以使用 -g(全局)标志,但如果您只使用 npm install
,那么您的软件包将不会被安装作为全球包。
我为 small/learning/test 个项目解决这个问题的方法是(我称之为)"git projects"。基本上我通过 git 管理各种项目,并且只是 "load" 我想从事的项目。当然,如果你想同时访问多个项目,这就不行了。
我喜欢为此目的使用 git 客户端,因为它更容易可视化我现有的 "projects"。
所以我的工作流程是这样的...
- 创建我的 main/base 文件夹。这将包含 git 存储库、单个 node_modules 文件夹以及所有项目应该通用的任何其他内容。
- 我创建了基本的 package.json 文件(使用
npm init
)。没有描述,什么都没有,只有基本框架 package.json 文件。 (但是,如果您知道您将在所有项目中使用某些包,您可以先 npm 安装它们,这样它们将作为您的 "base" 模块添加到 package.json。)
- 现在我将裸 package.json 检查到存储库中(以及您可能希望在所有项目中拥有的任何其他内容,但通常只是 package.json 文件)。这将是所有项目的基本起始分支。
- 签入后,我在 git 存储库中创建了一个分支。这将是 "Project 1" - 或者任何你想给它起的名字。然后根据需要构建项目,安装模块,检查更改等。
- 当我想开始一个新项目时,我只需检查第一个基本项目(它只是空的,或者几乎是空的 package.json 文件),然后从它做另一个分支。这将是我的第二个项目。
等等...
所以最主要的是每个新的 "project" 都将是 git 仓库中的一个新分支,要创建一个新项目,只需切换回原始的准系统,然后做一个新的分支。
当然也可以在项目中创建分支。这都是关于命名约定的。例如,您可以在新项目分支前加上 "P_" 或 "PROJECT_" 等前缀,这样您就可以在 git 客户端中快速判断哪些分支是项目。如果您只需要在现有项目中创建一个新分支,当然可以使用不同的命名方案。这基本上就是我的处理方式。
你可能不喜欢这个工作流程,但这样我就不需要全局安装包了。当我进行备份时,我可以简单地删除单个(可能很大)node_modules 文件夹。所有与项目相关的模块都可以通过简单地检查特定项目的分支并在其 package.json 上 运行 “npm install
” 来重新安装。希望它有意义。
如果真的只是为了测试简单的应用程序,可以通过某种方式重命名应用程序文件夹提供解决方案。它假定所有依赖项都是相同的,或者至少是所提供依赖项的一个子集。
我正在开发 Angular 2 个项目,我想在多个项目之间共享 node_modules 文件夹。我想创建这样的结构:
MainFolder
- Project1
- Project2
- package.json
所以对于所有的项目我只有 1 package.json。我的回答:可以这样做吗?
如果可能的话,我要和-g
一起吃午餐npm install
?
我无法理解 -g
是如何工作的。
有人可以给我指示如何进行吗?
非常感谢
我忘了说我用 angular-cli 构建项目。
Here 是关于各种 npm 安装参数的文档
In global mode (ie, with -g or --global appended to the command), it installs the current package context (ie, the current working directory) as a global package.
可以找到基于环境的-g安装位置here
实现您想要的目标的一种方法是为两个项目提供一个解决方案,并且每个项目路线都使用它自己的 lazy loaded module。
除非您有特定的业务需要共享资源,否则最好让每个项目独立使用自己的资源和配置。
-g代表全局安装,即你安装的包将对所有应用程序可用。
为什么要共享 node_modules 和 package.json 文件?
为每个单独的项目将它们分开。如果您需要共享您的项目,您可以共享您的 package.json 而不是共享 node_modules 文件夹。
还要指出的是,如果您通过列出名称手动安装软件包,那么您可以使用 -g(全局)标志,但如果您只使用 npm install
,那么您的软件包将不会被安装作为全球包。
我为 small/learning/test 个项目解决这个问题的方法是(我称之为)"git projects"。基本上我通过 git 管理各种项目,并且只是 "load" 我想从事的项目。当然,如果你想同时访问多个项目,这就不行了。
我喜欢为此目的使用 git 客户端,因为它更容易可视化我现有的 "projects"。
所以我的工作流程是这样的...
- 创建我的 main/base 文件夹。这将包含 git 存储库、单个 node_modules 文件夹以及所有项目应该通用的任何其他内容。
- 我创建了基本的 package.json 文件(使用
npm init
)。没有描述,什么都没有,只有基本框架 package.json 文件。 (但是,如果您知道您将在所有项目中使用某些包,您可以先 npm 安装它们,这样它们将作为您的 "base" 模块添加到 package.json。) - 现在我将裸 package.json 检查到存储库中(以及您可能希望在所有项目中拥有的任何其他内容,但通常只是 package.json 文件)。这将是所有项目的基本起始分支。
- 签入后,我在 git 存储库中创建了一个分支。这将是 "Project 1" - 或者任何你想给它起的名字。然后根据需要构建项目,安装模块,检查更改等。
- 当我想开始一个新项目时,我只需检查第一个基本项目(它只是空的,或者几乎是空的 package.json 文件),然后从它做另一个分支。这将是我的第二个项目。
等等...
所以最主要的是每个新的 "project" 都将是 git 仓库中的一个新分支,要创建一个新项目,只需切换回原始的准系统,然后做一个新的分支。
当然也可以在项目中创建分支。这都是关于命名约定的。例如,您可以在新项目分支前加上 "P_" 或 "PROJECT_" 等前缀,这样您就可以在 git 客户端中快速判断哪些分支是项目。如果您只需要在现有项目中创建一个新分支,当然可以使用不同的命名方案。这基本上就是我的处理方式。
你可能不喜欢这个工作流程,但这样我就不需要全局安装包了。当我进行备份时,我可以简单地删除单个(可能很大)node_modules 文件夹。所有与项目相关的模块都可以通过简单地检查特定项目的分支并在其 package.json 上 运行 “npm install
” 来重新安装。希望它有意义。
如果真的只是为了测试简单的应用程序,可以通过某种方式重命名应用程序文件夹提供解决方案。它假定所有依赖项都是相同的,或者至少是所提供依赖项的一个子集。