You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将含测试应用的Angular库发布到npm/GitLab,安装时仅取dist目录内容?

没问题,完全可以在同一个仓库里搞定这个需求,不用拆成两个仓库!下面给你一步步说怎么实现:

1. 先理清楚仓库结构

用Angular CLI创建库的话,默认的工作区结构刚好能满足你的需求:

  • 根目录是Angular工作区,src/ 就是你的测试应用,用来调试和测试你的库
  • projects/your-lib/ 存放库的核心源码
  • 运行ng build your-lib后,构建好的库文件会输出到dist/your-lib/ 目录
2. 配置npm发布只包含dist内容

要让npm只发布库的构建产物,关键是配置库的package.json(注意是projects/your-lib/package.json,不是根目录的那个):

  • 首先确保main、module、typings字段指向dist里的正确文件,比如:
    "main": "./bundles/your-lib.umd.js",
    "module": "./fesm2020/your-lib.mjs",
    "typings": "./your-lib.d.ts",
    
  • 然后添加files字段,明确指定要发布的文件列表,这样npm会自动忽略其他内容:
    "files": [
      "dist/**/*",
      "README.md",
      "LICENSE"
    ]
    
    这样一来,测试应用的代码、库的源码(除了dist里的构建产物)都不会被发布到npm。
3. 发布到GitLab和npm的流程
  • GitLab:直接把整个仓库推上去就行!GitLab是用来存源码的,你的测试应用和库源码都在里面,方便你自己开发、调试和版本管理。记得在根目录的.gitignore里加上dist/和node_modules/,避免提交构建产物和依赖包。
  • npm:先构建库,再发布dist里的内容。你可以手动执行:
    ng build your-lib --prod
    cd dist/your-lib
    npm publish
    
    也可以在根目录的package.json里加个快捷脚本,一键完成:
    "scripts": {
      "publish:lib": "ng build your-lib --prod && cd dist/your-lib && npm publish"
    }
    
    以后直接运行npm run publish:lib就能发布了,非常方便。
4. 额外小提示
  • 如果你担心用户克隆仓库后看到测试应用的代码,可以在根目录的README.md里说明:这个仓库包含库的源码和自用测试应用,使用库请直接通过npm安装,不用克隆整个仓库。
  • 要是测试应用里有一些敏感配置,记得用.gitignore忽略掉对应的文件,比如环境配置文件等。

这样就完美实现了一个仓库搞定开发、测试和发布,不用拆分仓库,npm用户拿到的只有干净的库文件,你自己也能在同一个环境里高效开发~

内容的提问来源于stack exchange,提问作者Bloodcast69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:55:24