【问题标题】:Consume Angular library as git dependency使用 Angular 库作为 git 依赖项
【发布时间】:2019-07-29 19:40:28
【问题描述】:

我有一个 Angular 库托管在 git 存储库中,但未发布到 npm。该库使用 ng-packagr 打包。是否可以在另一个项目中将其作为 git 依赖项导入?

简单地将 git URL 指定为 npm 依赖项是行不通的,因为 ng-packagr 将 Angular 库构建到 dist 文件夹中,并且该文件夹通常发布到 npm。可以指定postinstall 脚本,但是之后如何配置库的根文件夹实际上在dist 文件夹中?

我不想发布到 npm,因为该应用程序不是开源的。我可以使用私有 npm 存储库,但我在考虑是否可以避免所有麻烦。

【问题讨论】:

  • 我真的不明白反对票,我会说这是一个有效的问题,我解释了已经做了什么和原因。
  • 像你这样名声在外的人应该已经知道,问得不好的问题会获得反对票。您对特定库有问题,但您忽略了此信息。随机库没有神奇的解决方案。您对试图从整体上解决问题的答案是否满意?答案和问题一样好。该问题可以通过从包src 或其他方式导入入口点来解决。

标签: angular npm


【解决方案1】:

我所做的实际上是将其指定为 git 依赖项,添加一个安装后脚本,并在导入时导入 library/dist

【讨论】:

    【解决方案2】:

    package.json 中,您可以添加 git ssh 作为依赖项。

    "dependencies": {
      "some-package": "github:github_username/some-package"
    }
    

    然后就可以从组件中导入包了。

    【讨论】:

    • 问题在于 ng-packagr 将 Angular5 包构建到 dist 文件夹中。
    【解决方案3】:

    另一个选择是将 dist 文件夹的内容保存在它自己的仓库中。 仅当您在 ngPackage 中的库的 package.json 中指定不删除目标路径时,这才有可能。如果您也这样做,您可能还必须手动定义目的地。

    下面是一个示例 package.json

    {
      "name": "my-lib",
      "version": "0.0.4",
      "peerDependencies": {
        "@angular/common": "^7.1.0",
        "@angular/core": "^7.1.0"
      },
      "ngPackage": {
        "dest": "../../dist/my-lib",
        "deleteDestPath": false
      }
    }
    

    然后您将在 my-lib 中 git init 并将其推送到它自己的仓库。该回购将成为对其他项目的依赖。

    【讨论】:

      【解决方案4】:

      找到了解决方法。您可以像这样在 package.json 文件中指定 git 依赖项,然后像这样使用 postinstall 脚本:

      "scripts"
      ...
      "postinstall": "npm i node_modules/some-package/dist/your-lib/your-lib-0.0.1.tgz"
      },
      "dependencies": {
        "some-package": "github:github_username/some-package",
      ...
      }
      

      【讨论】:

      • 你如何构建 tgz 以及基于构建的哪一部分?它不在 build 命令完成的文件中。
      • 构建 tgz 的命令是 npm pack,您可以在默认的 Angular 工作区中运行它:)
      • 这不好,因为如果包和库同名,它会将引用更改为磁盘版本file:node_modules/some-package/dist/your-lib/your-lib-0.0.1.tgz
      • 我建议在您的安装后脚本中使用--no-save 以避免添加文件依赖项
      猜你喜欢
      • 2020-09-28
      • 1970-01-01
      • 2023-04-01
      • 2013-12-06
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      相关资源
      最近更新 更多