我在非常受限的环境中工作,这意味着我无法访问互联网。我设置了所有内容,以导入Angular模板项目并从脱机缓存中安装所有软件包。我按照以下步骤操作:
在在线计算机上
配置yarn-offline-mirror
,将其修剪为false(目录 X )
使用ng new foo --skipInstall=true
使用yarn (install)
安装软件包,以生成 yarn.lock 并将所有tgz软件包存储在目录 X 中p>
删除 node_modules
每当我需要更多软件包时,我都使用npm-package-downloader
和参数-d
将所有依赖项也下载为tgz文件,并将其复制到目录 X 中。
在我的离线计算机上
yarn-offline-mirror
yarn clean cache
,再安装yarn --offline
只要所有的tgz-packages都在我的脱机计算机上,这就像一种魅力(由于 yarn.lock )。
我的问题
我想在离线计算机上添加更多软件包。这些程序包存在于脱机镜像中,因为我已将它们复制到了计算机上。当我跑步时
yarn clean cache
yarn add <absolute-path-to-tgz-package> --offline
出现两种可能的情况:
找不到与“ package-name”匹配的任何版本 缓存中的“ package-version”。这通常是由于缺少 锁定文件中的条目,运行不带--offline标志的Yarn可能 帮助解决问题。
据我了解,yarn需要以某种方式知道软件包需要哪些依赖关系。但是它必须知道,否则它将无法抛出此特定错误。所以我的问题是,如何强制yarn在目录 X 中查找依赖项?这些包在那里,因为我以各自的依赖关系下载了它们。显然,我不应该手动编辑 yarn.lock 。 yarn add的文档没有列出这样的选项(事实上,它甚至没有列出--offline
标志)