如何在发布Angular库到npm前复制根目录README.md
Angular库发布时包含根目录README.md的解决方案
问题背景
项目结构:
- README.md - package.json - angular.json - projects - my-project - ng-package.json - package.json
执行命令 ng build my-project --configuration production && npm publish ./dist/my-project 发布到npm时,根目录的README.md未被包含进发布包,且存在以下限制:
- 仅保留一份README.md,不复制到
my-project目录 - 不能删除根目录README.md,否则GitHub仓库首页无该文件
- 直接在
ng-package.json中配置"assets": ["../../README.md"]会报错Cannot read assets from a location outside of the project root.,此方法无效
可行解决方案
方法1:通过npm脚本复制README到dist目录
在根目录的package.json中添加预处理脚本,构建完成后自动将根目录README复制到发布目录,再执行发布:
修改根目录package.json的scripts节点:
"scripts": { "build:lib": "ng build my-project --configuration production", "copy:readme": "cp README.md ./dist/my-project/", "publish:lib": "npm run build:lib && npm run copy:readme && npm publish ./dist/my-project" }
之后执行 npm run publish:lib 即可完成发布,既保留根目录的README用于GitHub展示,又能让npm包包含该文件,无需复制到projects目录。
注:Windows系统需将
cp替换为copy,或者使用跨平台工具如cpy-cli保证兼容性。
方法2:配置angular.json的项目资产(需验证兼容性)
尝试在angular.json中找到my-project的architect.build.options.assets配置,添加根目录README的复制规则:
"assets": [ { "input": "../../", "glob": "README.md", "output": "./" } ]
若此配置未触发路径限制报错,则构建时会自动将README复制到dist目录;若仍报错,优先使用方法1。
内容的提问来源于stack exchange,提问作者Raphaël Balet
相关产品推荐
相关产品推荐

