gpt4 book ai didi

json - 有没有办法将 package.json 文件中的依赖项安装到不同的目录中?

转载 作者:太空宇宙 更新时间:2023-11-04 00:51:55 42 4
gpt4 key购买 nike

我想知道是否有办法将 package.json 文件的依赖项转移到不同的目录中。场景是这样的:

我有一个项目,正在使用 git 和 post-receive 钩子(Hook)进行部署。当我想要部署我的项目时,我将其推送到服务器上的裸 git 存储库,然后将存储库克隆到单独的文件夹中(从而使文件可用),运行 npm install 来安装依赖项,运行构建(在本例中为 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/

对于拥有一个中央依赖目录来说,这实际上并不起作用。

我还发现了 1 个讨论使用符号链接(symbolic link)的问题。这将如何运作?

最佳答案

听起来您真正想要的是在构建服务器上有一个本地包缓存。 NPM already 就是这样做的。但是,默认情况下:

Commands that make non-essential registry requests (such as search and view, or the completion scripts) generally specify a minimum timeout. If the .cache.json file is younger than the specified timeout, then they do not make an HTTP request to the registry.

这不包括软件包安装。您可以通过执行以下操作来规避此问题:

npm --cache-min 9999999 install <package-name>

few请求对此命令有一个更好的界面,因为这是一个非常常见的要求。

还有一些项目提供替代机制:

关于json - 有没有办法将 package.json 文件中的依赖项安装到不同的目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32015769/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com