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

kar*_*ina 7 yarnpkg

我假设当我安装npm包时说第一次做出反应

yarn add react
Run Code Online (Sandbox Code Playgroud)

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

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

yarn add react
Run Code Online (Sandbox Code Playgroud)

要么

yarn add react --prefer-offline
Run Code Online (Sandbox Code Playgroud)

adr*_*ian 13

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

更多信息,访问https://yarnpkg.com/blog/2016/11/24/offline-mirror/


cyb*_*bat 7

为了使用--prefer-offline你首先必须设置你的离线包存储库。

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

yarn config set yarn-offline-mirror ./.npm-offline  
Run Code Online (Sandbox Code Playgroud)

还要设置一个配置,让纱线清理下载的 tarball:

yarn config set yarn-offline-mirror-pruning true
Run Code Online (Sandbox Code Playgroud)

现在,每当您yarn install在某个项目中运行时,它都会将模块缓存在此目录中,然后您可以使用yarn --prefer-offline.

当您稍后想在新项目中从缓存安装时,您将需要指定所需的模块版本,因为它没有latest. 最简单的方法是尝试添加:

yarn add moment
Run Code Online (Sandbox Code Playgroud)

在我的机器上打印:

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...
Run Code Online (Sandbox Code Playgroud)

然后我可以使用以下命令离线安装最新版本:

yarn add moment@2.19.3
Run Code Online (Sandbox Code Playgroud)

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