使用Travis+semantic-release发布React组件npm包仅含3个文件求助
解决Travis+semantic-release发布nwb React组件到npm时包内容为空的问题
看起来你遇到的核心问题是Travis执行semantic-release时没有先构建组件产物,导致npm只能上传当前存在的README、LICENSE和package.json这三个文件——毕竟你手动发布时会先执行构建,所以产物目录存在,npm能正常上传。
下面是具体的排查和解决步骤:
1. 确认Travis构建流程缺少构建步骤
你的.travis.yml里,after_success直接调用了semantic-release,但没有先执行组件构建。nwb创建的React组件项目需要通过npm run build生成css、es、lib、umd这些产物目录,而Travis默认的构建流程(install→script(默认是npm test)→after_success)里没有包含这一步。
2. 修改Travis配置,在semantic-release前添加构建命令
更新你的.travis.yml中的after_success部分,把构建命令加在semantic-release前面:
after_success: - cat ./coverage/lcov.info | ./node_modules/codecov.io/bin/codecov.io.js - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js - npm run travis-deploy-once "npm run build && npm run semantic-release"
这样Travis会先执行组件构建,生成所有需要发布的产物目录,再启动semantic-release流程。
3. 确认package.json的脚本和files配置正确
- 确保你的
package.json里有正确的build脚本:
这是nwb创建项目时默认生成的,如果你重建过项目应该已经存在。"scripts": { "build": "nwb build-react-component", // 其他脚本... } - 你已经配置了
"files": [ "css", "es", "lib", "umd" ],这个没问题——npm会优先根据这个列表上传文件,只要这些目录存在,就会被包含在发布包中。
4. 验证Travis构建日志
触发新的Travis构建后,查看日志确认:
- 有没有执行
npm run build的步骤,以及是否成功生成了css、es等目录; - semantic-release执行npm publish时,这些目录是否被打包上传。
为什么手动发布正常?
因为你手动发布前肯定先运行了npm run build,生成了所有产物目录,npm publish时能找到这些目录并上传;而Travis的自动化流程里漏掉了构建这一步,导致产物目录不存在,自然只能上传已有的三个文件。
内容的提问来源于stack exchange,提问作者A. Iglesias
相关产品推荐
相关产品推荐

