node.js - 如何使用 GitHub Actions 自动发布 Typescript 包?
问题描述
每当我将代码推送到主分支时,我都会使用 GitHub 操作自动发布我的npm 包。问题出在我.gitignore
添加的/dist/
文件夹中。因此,当我将代码推送到云端时,它会忽略该dist
文件夹,我只想发布 dist 文件夹。我该怎么做呢?
我尝试使用npm install
and在云npm run build
中创建一个dist
文件夹,然后发布包,但它不起作用。它不会创建编译版本。我看到的唯一解决方案是我将其从云中删除/dist/
并将.gitignore
其上传到云端,但有没有其他方法可以忽略 dist 并使用 Github Actions 将其自动发布到 npm?
这是我的.yml
文件
name: NPM Publish
on:
push:
branches:
- master
jobs:
release:
name: Pubish
runs-on: ubuntu-latest
steps:
- name: ⏬ checkout
uses: actions/checkout@v2.1.1
- name: Node
uses: actions/setup-node@v1.4.2
with:
node-version: 12
registry-url: https://registry.npmjs.org
- name: Publish
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}}
解决方案
您必须在发布之前构建它或在您的 package.json 文件中添加预发布脚本。
IE:
- name: Build
run: npm run build
- name: Publish
run: npm publish --access public
或者在 package.json
...
"scripts": {
...
"prepublish": "npm run build",
}
它没有构建的原因是它没有 node_modules 所以你还需要安装它们并最好使用缓存。
因此,您需要在构建之前添加到您的 yaml 文件中。
- name: install
run: npm install
或者如果您使用的是锁定文件,(不适合包)
- name: install
run: npm ci
请尝试同时使用缓存而不是重载 npm 注册表。
推荐阅读
- python - 熊猫:数据框转换
- python-3.x - 从数据框中删除具有范围内值的行
- spring-boot - spring cloud stream - 消费组绑定
- python - 带有加权选项输出的 random.choices
- mysql - 分析 + 优化 InnoDB 表
- css - justify-self 在 CSS4 中“不是已知的 CSS 属性”,但 justify-contents 不起作用
- python - 在一个类中用单个“if-else”替换多个“if-else”
- excel - VBA循环遍历行并返回值
- python - 为什么我们在这个装饰器中返回 None ?
- amazon-cognito - 合并 Cognito 中使用相同电子邮件(电子邮件和社交)创建的两个帐户