私有 Typescript 库作为 npm 依赖项

Posted

技术标签:

【中文标题】私有 Typescript 库作为 npm 依赖项【英文标题】:Private Typescript library as an npm depenency 【发布时间】:2019-02-25 20:46:34 【问题描述】:

我有一个 Typescript 库,我将其打包为 npm 模块。我在开发前端应用程序期间使用yarn link 轻松集成了这个库。

现在是设置 GitLab CI 并让其他开发人员在前端应用程序上工作的时候了。我目前遇到了分发这个包的问题。

我已经确定的选项和遇到的问题:

yarn add <git-url>

这会添加源代码,但因为它是打字稿,所以这是未编译的。我无法使用相同的tsconfig.json 编译这个库。只编译一个文件。

此解决方案还有一个问题,即端口 :22 在开发人员的机器上被阻塞。这将阻止他们使用git+ssh。我不知道 CI 将如何检索这个也适用于开发人员的包。

yarn add tar-ball

我尝试使用 tarball,但没有明显的方法来存储此 tarball。 GitLab 不会将构建产生的工件暴露给其他 CI 管道。

供应包

接下来,我决定尝试将节点模块添加到 git repo。但是我发现没有办法阻止纱线自动删除这个包。如果我将库添加到 node_modules,那么它会在运行 yarn 时被删除。

当然,我可以切换到使用私有 npm 模块。但在我看来,如果您已经拥有完美的 GitLab 环境,应该有简单的替代方案来分发内部包。

如何在没有 NPM 私有注册表的情况下私​​下分发 Typescript 包?

【问题讨论】:

【参考方案1】:

一种选择是供应包,但将其放在自定义目录中(不在node_modules 下),例如my-library,然后在package.json 中的dependencies 中写入"my-library": "link:my-library"。这将导致 Yarn 创建一个从 node_modules/my-librarymy-library 的符号链接。有关link: 语法的更多信息,请参阅this thread。

【讨论】:

以上是关于私有 Typescript 库作为 npm 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

Docker `npm install` 与 TypeScript 中的 GitHub 私有 repo 依赖项

从私有 gitlab 存储库中使用 npm 安装依赖项

Yarn 包管理器:从私有 Bitbucket 存储库安装依赖项

如何让 npm 从 GitHub url 安装 typescript 依赖项?

私有 github repo 作为依赖在 npm install 上是无关的

添加 GitLab 私有存储库作为 Maven 依赖项