私有 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-library
到 my-library
的符号链接。有关link:
语法的更多信息,请参阅this thread。
【讨论】:
以上是关于私有 Typescript 库作为 npm 依赖项的主要内容,如果未能解决你的问题,请参考以下文章
Docker `npm install` 与 TypeScript 中的 GitHub 私有 repo 依赖项
Yarn 包管理器:从私有 Bitbucket 存储库安装依赖项
如何让 npm 从 GitHub url 安装 typescript 依赖项?