Npm 纱线添加<;本地包的路径>--脱机不安装依赖项

Npm 纱线添加<;本地包的路径>--脱机不安装依赖项,npm,yarnpkg,offline-mode,Npm,Yarnpkg,Offline Mode,我在一个非常受限制的环境中工作,这意味着我不能上网。为了导入Angular模板项目并从脱机缓存安装所有包,我设置了所有内容。我遵循以下步骤: 在线机器上 配置离线镜像,并将其修剪为false(目录X) 使用ng new foo--skipintstall=true创建一个新的angular应用程序 使用warn(install)安装软件包,以生成warn.lock并将所有tgz软件包存储在目录X中 删除节点单元模块 每当我需要更多的软件包时,我就使用带有参数-d的npm-package-down

我在一个非常受限制的环境中工作,这意味着我不能上网。为了导入Angular模板项目并从脱机缓存安装所有包,我设置了所有内容。我遵循以下步骤:

在线机器上

  • 配置
    离线镜像
    ,并将其修剪为false(目录X)

  • 使用
    ng new foo--skipintstall=true创建一个新的angular应用程序

  • 使用
    warn(install)
    安装软件包,以生成warn.lock并将所有tgz软件包存储在目录X中

  • 删除节点单元模块

  • 每当我需要更多的软件包时,我就使用带有参数
    -d
    npm-package-downloader来下载所有依赖项作为tgz文件,并将它们复制到目录X

  • 在我的脱机机器上

  • 我从X目录导入tgz文件,并将它们放在相同的位置
  • 我在我的在线机器上配置
    warn离线镜像
    like
  • 我导入angular模板并安装所需的软件包,其中包含
    Thread clean cache
    ,然后是
    Thread--offline
  • 只要所有的tgz包都在我的离线机器上,它就会像一个符咒一样工作(因为warn.lock)

    我的问题

    我想在脱机计算机上添加更多程序包。这些包存在于脱机镜像中,因为我将它们复制到了计算机上。当我跑的时候

    yarn clean cache
    yarn add <absolute-path-to-tgz-package> --offline
    
    纱线清理缓存
    纱线添加-离线
    
    出现两种可能的情况:

  • 包没有依赖项,在这种情况下,它可以按预期工作
  • 包具有依赖项:在这种情况下,对于每个“缺少”依赖项(包名称和包版本是占位符),将抛出以下错误:
  • 找不到任何与“包名”匹配的版本 缓存中的“包版本”。这通常是由于缺少 在锁文件中输入,不带--offline标志的运行纱线可能会 帮助解决问题

    据我所知,Thread需要知道软件包需要哪些依赖项。但是它必须知道,否则它不能抛出这个特定的错误。所以我的问题是,我怎样才能强迫Thread也在目录X中查找依赖项呢?这些包就在那里,因为我下载它们时附带了各自的依赖项。显然,我不应该手动编辑warn.lock。纱线添加的文档没有列出这样的选项(事实上,它甚至没有列出
    --offline
    标志)