我正在开发各种Angular 2项目,我想在多个项目之间共享node_modules文件夹。我想创建一个这样的结构:
MainFolder
- Project1
- Project2
- package.json
所以我只有1个package.json用于所有项目。我的回答:有可能这样做吗?
如果可能的话,我必须与npm install
共进午餐-g
?
我无法理解-g
的工作原理。
有人能给我指示如何继续吗?
非常感谢
我忘了说我用angular-cli构建项目。
答案 0 :(得分:1)
我为小型/学习/测试项目解决这个问题的方法是(我称之为)" git projects"。基本上我通过git管理各种项目,只是" load"我想要的项目。当然,如果您想同时访问多个项目,这不起作用。
我喜欢使用git客户端来实现此目的,因为它更容易可视化我现有的"项目"。
所以我的工作流程就是这个......
npm init
)。没有描述,没有什么,只是基本的框架package.json文件。 (但是,如果你知道你将在所有项目中使用某些软件包,你可以先安装它们,这样它们就会被添加到package.json作为你的" base"模块。)等等......
所以最重要的是每个新的"项目"将成为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应用程序文件夹来提供解决方案。假定所有依赖项都是相同的,或者至少是所提供依赖项的子集。