我想知道是否有办法将package.json文件的依赖关系放到另一个目录中。场景是这样的:
我有一个项目,我使用git和post-receive
钩子进行部署。当我想部署我的项目时,我将它推送到我的服务器上的裸git仓库,然后将repo克隆到一个单独的文件夹(从而使文件可用),运行npm install
来安装依赖项,运行build(在本例中为grunt
),将构建文件移动到Web服务器托管的文件夹,覆盖任何旧文件,然后通过删除它来继续清理克隆文件夹。
不幸的是,这也有消除node_modules
文件夹的副作用,这意味着必须在下一次构建时安装一组新的依赖项,如果我尝试快速部署,需要花费时间。
我的问题背后的原因基本上是想知道是否有比我现在更优雅的解决方案。有没有办法可以将依赖项安装到我的服务器上的依赖项目录,然后从那里运行所有的构建?这样我可以将所有模块保存在一个位置,并且我在服务器上运行的其他构建也使用这些软件包,同时还添加了他们所需的任何其他依赖项。
到目前为止,我的研究尚未证明是成功的 - 我尝试过运行
npm install /some_folder --prefix /other_folder
但是这会产生一个如下所示的目录结构的不利影响:
/
├── some_folder
| ├── <various files>
| └── package.json
└── other_folder
└── node_modules/
└── some_folder/
├── <various files from first folder>
├── package.json
└── node_modules/
这对于拥有一个中央依赖项目录是不行的。
我还发现了一个涉及使用符号链接的问题。这会怎么样?