npm/yarn项目能否依赖未构建的Git仓库?Vue组件库免NPM发布方案咨询
你用yarn add author/repo#branch拉不到dist目录,本质是因为默认yarn拉取Git源依赖时只会拉取仓库中已提交的文件,你的dist目录大概率被加到了.gitignore里,仓库里根本没存,自然拉不到。针对你提到的三个可选方向,具体优劣势和适配场景如下:
方案1:提交dist目录到Git(最适配你的轻量化迭代需求)
- 操作非常简单:先把组件库仓库里
.gitignore中关于dist/的忽略规则删掉,之后每次修改组件库代码后,本地执行构建命令更新dist目录,再把dist和源码一起提交推送到GitHub即可。 - 优势:完全不需要额外的发布流程,依赖方只要执行
yarn upgrade <组件库包名>就能拉到最新的构建好的代码,开箱即用,完美匹配你要的小步迭代需求。 - 小优化:可以在组件库的package.json里加个简单的git钩子,比如
postcommit自动执行构建命令,避免你忘了更新dist就提交。
方案2:通过GitHub Release分发构建产物(适合需要严格版本管控的场景)
- 操作方式:每次要发布可用版本时,本地构建出完整的dist目录,将dist打包成压缩包上传到对应版本的GitHub Release中,依赖方安装时直接指定Release的压缩包地址即可。
- 优势:版本边界清晰,每个版本的产物独立稳定,不会出现分支提交了半成品代码导致依赖方拉到不可用版本的问题。
- 劣势:每次发版都要走创建Release、上传产物的流程,比直接提交dist繁琐,不符合你要的轻量化开发要求。
方案3:依赖方安装时现场构建(不推荐,踩坑概率极高)
- 操作方式:在组件库的package.json中添加
prepare脚本,值为你的构建命令(比如npm run build),yarn/npm安装Git源依赖时会自动执行这个脚本,在依赖方的node_modules目录下现场构建出dist。 - 劣势非常明显:首先依赖方本地需要安装你组件库的所有构建依赖(打包工具、相关插件、Vue版本都要和组件库要求匹配),很容易因为环境差异出现构建失败的问题;其次每次安装/升级组件库都要跑一遍构建流程,拖慢装包速度;如果多个业务项目依赖这个组件库,每个项目都要重复构建一次,完全是无用的资源浪费。
最终建议
优先选方案1就好,你们是内部使用、追求轻量化小步迭代,这个方案的改造成本最低,几乎不需要调整现有开发流程,完全能满足你的需求。
内容的提问来源于stack exchange,提问作者Arild
相关产品推荐
相关产品推荐

