什么纱线 - 首选 - 离线吗?

时间:2017-04-30 17:24:45

标签: yarnpkg

我假设当我安装npm包时,首先用

做出反应
yarn add react

这会将反应文件保存在本地缓存中。我发现.yarn-cache包含许多文件。我假设它是yarn本地缓存文件夹,所以当我将来再次安装时会反应,它将从本地缓存中安装,没有??

如果我将来需要再次安装反应,我应该写一下

yarn add react

yarn add react --prefer-offline

3 个答案:

答案 0 :(得分:12)

我的理解是,默认情况下,纱线会在您安装/恢复时始终尝试从互联网上下载软件包,并且还会将其存储在缓存中,这意味着将来如果您尝试安装/恢复并且没有互联网连接,它可以回退到缓存并在必要时从那里安装。通过指定--prefer-offline,您正在反转此行为,以便它首先检查缓存,并且只有在无法在缓存中找到它时才尝试从Internet下载该包。这可以使您的安装/恢复速度更快,并允许您执行可重复的版本,但您可能无法获得最新版本(例如,如果您使用的版本规范如~1.2.3)。还有一个--offline选项,如果它无法在本地缓存中找到一个包(即它不会尝试从互联网上下载),就会抛出错误。

https://yarnpkg.com/blog/2016/11/24/offline-mirror/

的更多信息

答案 1 :(得分:3)

要使用--prefer-offline,您首先必须设置离线包回购。

让我们将缓存设置在主文件夹中的隐藏目录中:

yarn config set yarn-offline-mirror ./.npm-offline  

还设置配置以使纱线清理已下载的tarball:

yarn config set yarn-offline-mirror-pruning true

现在,无论何时在某个项目中运行yarn install,它都会将模块缓存在此目录中,然后您可以使用yarn --prefer-offline进行提取。

如果您想稍后(可能在新项目中)从缓存中安装,则需要指定所需的模块版本,因为它没有latest的概念。最简单的是简单地尝试添加:

yarn add moment

在我的机器上打印:

error Couldn't find any versions for "moment" that matches "latest" in our cache. 
Possible versions: "2.1.0, 2.13.0, 2.17.0, 2.17.1, 2.18.1, 2.19.1, 2.19.2, 2.19.3, 2.8.4" 
// Note that above is not in semver order...

然后我可以安装最新的离线:

yarn add moment@2.19.3

@adrian提到的纱线博客post详细说明了如何为每个项目缓存以及如何在需要时为您的团队提交。我自己只使用一个缓存,以便在脱机时能够理想地引导新项目。

答案 2 :(得分:0)

A quite popular guy来自S.O.说:

  

"阅读来源,卢克!"

这里是yarn --prefer-offlinecommander.option('--prefer-offline', 'use network only if dependencies are not available in local cache'); the source

@var Goutte\Client $client

享受!