2015-01-21 131 views
4

有没有办法在全球安装流星包?全球安装流星包

因此,为以后创建的项目安装没有互联网连接的全球安装软件包,避免重复下载以及人们可能想到的其他好处。

就像Node.js的,与-g标志使用NPM命令(节点包管理器),npm install -g,这样做NPM安装节点封装成一个全球性的目录,当希望从JavaScript程序加载,加载从那里(如果可用) ,以及从项目的节点模块文件夹中查找和加载包。

回答

4

Meteor已经将软件包下载到一个全局存储库中,所有本地应用程序都可以从中受益。

因此,如果您meteor add iron:[email protected]它被下载并添加到您的项目。下一次另一个项目需要相同的版本时,它会在同一个地点使用。

此外,还有一个PACKAGES_DIR环境变量,在设置时允许您集中保留自己的本地包,以便您可以在项目之间共享它们。实际上,您可以将其保留在整个团队可以集中安装和使用的网络驱动器(NFS)上。

然而,存在固有的问题。流星的版本解析程序查找更新,除非你确定你的程序包依赖版本,这正是为什么流星似乎非常渴望被连接。

即使你的依赖关系,你依赖的包可能没有(这显然是大多数包的情况),所以流星不断寻找整个包树的更新,并下载它认为令人满意的那些版本约束解析器。

好消息是,他们都在不断提高自己的工具,需要较低数量的查找,更快的构建,更好的搜索等

总而言之,在本质上没有什么可以做,除非流星提供以某种方式托管其软件包存储库的整个镜像,供您脱机使用。我想这是不太可能发生的。

流星是连接世界的工具,它确实假设你的连接。哎呀,整个旅程始于curl https://install.meteor.com/ | sh

是的,如果我们能够在偏远的海滩上跋涉,或者到达该海滩的12小时飞行,那将是非常棒的。

到那时,在线开心编码;)

+0

谢谢。我的意思是无法离线使用整个流星包仓库,这对大部分软件包管理者来说已经是最不寻常的了,比如npm,甚至os包管理器,比如freebsd pkg。 从你的解释中,你的意思是说,通过'meteor add'安装的meteor包被添加到一个中央全局目录中,而我发布meteor add的项目只是将这个包dir复制到它的目录中。如果是这样,在另一个项目中为同一个包发布的下一个流星添加通常应该只是将包dir复制到这个项目目录中,我的意思是离线.. – 2015-01-22 09:46:51

+0

我认为这是Meteor的方式,而你的意思是“..同名点”。但是必须给出相同的确切版本号,以便从本地计算机中央全局目录中的现有副本进行安装。 – 2015-01-22 09:50:12

+0

它不会将包复制到项目的包目录中。它只是在构建时将它们复制到您的构建版本中,该版本进入项目根目录下的.meteor/local/build目录(这只是开发过程中为应用程序提供服务的tmp位置)。关于版本号,您不需要为这种匹配请求确切的版本。 Meteor的版本约束解析器分别为您的每个本地应用程序工作,当您的两个应用程序碰巧需要相同的版本时,它只会被下载一次到您的全局包存储库,然后从那里下载到您的本地构建中。 – 2015-01-22 17:31:06