有没有办法将package.json文件中的依赖项安装到不同的目录中?
我想知道是否有一个package.json文件的依赖关系的方式到另一个目录。 情景是这样的:
我有一个项目,我用git和post-receive
hook进行部署。 当我想部署我的项目,我把它推到我的服务器上的裸git回购,然后克隆到一个单独的文件夹回购(从而使文件可用),运行npm install
依赖项,运行构build(在这种情况下grunt
),将构build文件移动到由Web服务器托pipe的文件夹,覆盖任何较旧的文件,然后通过删除克隆的文件夹来清理它。
不幸的是,这也有消除node_modules
文件夹的node_modules
,这意味着一个新的依赖关系必须安装在下一个版本,这需要时间,如果我试图快速部署。
我的问题背后的原因基本上是想知道是否有比我目前更优雅的解决scheme。 有没有办法,我可以安装依赖到我的服务器上的依赖关系目录,然后从那里运行所有的生成? 这样我就可以把所有的模块放在一个地方,而且我在服务器上运行的其他版本也使用这些包,同时也添加了他们需要的附加依赖。
迄今为止我的研究没有被certificate是成功的 – 我尝试了跑步
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/
这对于拥有一个中央的依赖关系目录来说真的不起作用。
我还发现有一个关于使用符号链接的问题。 这将如何工作?
它听起来像你真正想要的是在你的生成服务器上有一个本地包caching。 NPM 已经这样做了。 但是,默认情况下:
使非必要的registry请求(如search和查看,或完成脚本)的命令通常指定最小超时。 如果.cache.json文件比指定的超时小,那么它们不会向registry发出HTTP请求。
这不包括软件包安装。 您可以通过执行以下操作来避免这种情况:
npm --cache-min 9999999 install <package-name>
有很less的要求有一个更好的接口,因为这是一个相当普遍的要求。
还有一些项目提供了替代机制:
- https://www.npmjs.com/package/npm-cache – 提供了一个在本地caching包的替代命令
- http://mixu.net/npm_lazy/ – 有效的内部包registry服务器
- npm安装显示最新,而不是安装包
- Heroku节点应用程序推送失败
- 使用node.js npm和git的最佳工作stream程
- openshift nodeJS应用程序 – git最新/服务器运行没有错误,但我仍然看到欢迎页面
- 在Windows机器上工作时是否有任何有unix行结尾的副作用?
- 连接到Heroku node.js应用程序中的数据库,而无需在git上显示authentication详细信息
- 从git仓库运行“npm install”包时出错
- 为Elastic Beanstalk上的github专用回购访问设置SSH密钥
- 修改示例Hello World Node.js代码在Google Compute Engine中不起作用