Skip to content

Commit deaf395

Browse files
committed
Support GitHub Packages
1 parent c92904f commit deaf395

File tree

3 files changed

+111
-14
lines changed

3 files changed

+111
-14
lines changed

.github/workflows/gh_pkg.yaml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# https://docs.github.com/ja/actions/guides/publishing-nodejs-packages
2+
name: Node.js Package(GitHub Packages)
3+
on:
4+
release:
5+
# draft から publish への対応でサンプルの created から変更
6+
types:
7+
- published
8+
jobs:
9+
publish_to_gh_pkgs:
10+
runs-on: ubuntu-latest
11+
environment: gh_pkg
12+
13+
steps:
14+
- uses: actions/checkout@v2
15+
16+
# .npmrc ファイルをセットアップして GitHub Packages に公開する
17+
- uses: actions/setup-node@v2
18+
with:
19+
node-version: '14.x'
20+
registry-url: 'https://npm.pkg.github.com'
21+
# デフォルトはワークフローファイルを所有するユーザまたは Organization
22+
# scope: '@hankei6km'
23+
24+
# https://docs.github.com/ja/free-pro-team@latest/actions/guides/caching-dependencies-to-speed-up-workflows
25+
- name: Cache node modules
26+
uses: actions/cache@v2
27+
env:
28+
cache-name: cache-node-modules
29+
with:
30+
# npm キャッシュファイルは Linux/macOS の「~/.npm」に保存される
31+
path: ~/.npm
32+
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
33+
restore-keys: |
34+
${{ runner.os }}-build-${{ env.cache-name }}-
35+
${{ runner.os }}-build-
36+
37+
# package.json を GitHub Packages 用に調整.
38+
- name: Change scope
39+
run: jq '.name |= (sub("^.+/"; "") | sub("^"; "@"+ (env.GITHUB_REPOSITORY | split("/")[0]) +"/")) ' package.json > tmp_package.json && mv tmp_package.json package.json
40+
41+
# https://dev.classmethod.jp/articles/github-actions-npm-automatic-release/
42+
# activity type を published へ変更したので念の為
43+
# `publishConfig` の書き換えができたらコメント外す.
44+
# - name: can-npm-publish
45+
# run: npx can-npm-publish
46+
47+
- name: Install modules
48+
run: npm ci
49+
50+
- name: Run tests
51+
run: npm run test
52+
53+
- name: Build
54+
run: npm run build
55+
56+
- run: npm publish
57+
env:
58+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/npm_pkg.yaml

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,29 @@
11
# https://docs.github.com/ja/actions/guides/publishing-nodejs-packages
2-
name: Node.js Package
2+
name: Node.js Package(npmjs)
33
on:
44
release:
55
# draft から publish への対応でサンプルの created から変更
6-
types: [published]
6+
types:
7+
- published
78
jobs:
8-
build:
9+
publish_to_npmjs:
10+
if: ${{ github.event.release.prerelease == false }}
911
runs-on: ubuntu-latest
1012
environment: npm_pkg
1113

1214
steps:
15+
# prerelease のような文字が含まれていたら失敗させる.
16+
- name: Check name and tag_name
17+
if: >
18+
${{ contains(github.event.release.name, 'p') }} ||
19+
${{ contains(github.event.release.tag_name, 'p') }} ||
20+
${{ contains(github.event.release.name, '-') }} ||
21+
${{ contains(github.event.release.tag_name, '-') }}
22+
run: |
23+
echo 'name: ${{ github.event.release.name }}'
24+
echo 'tag_name: ${{ github.event.release.tag_name }}'
25+
exit 1
26+
1327
- uses: actions/checkout@v2
1428

1529
# npm に公開するように .npmrc ファイルを設定する

README.md

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# my-starter-npm-cli-and-lib
22

33
TypeScript で npm 用の CLI とライブラリのパッケージを作成するスターター。
4-
CodeSandbox 上でコードを編集し、GitHub Actions から npm レジストリーへ publish することを想定している。
4+
CodeSandbox 上でコードを編集し、GitHub Actions から npm レジストリーおよび GitHub Packages へ publish することを想定している。
55

66
## 利用方法
77

8-
1. GitHub から import する(GitHubBox からは https://githubbox.com/hankei6km/my-starter-npm-cli-and-lib)
9-
1. fork
8+
このリポジトリをテンプレートとして新しいリポジトリを作成する。
9+
10+
1. `$ gh repo create <name> --template https://github.com/hankei6km/my-starter-npm-cli-and-lib` でリポジトリ作成
1011
1. `package.json``LICENSE` 等を新しいパッケージにあわせて変更(付録にテンプレート)
11-
1. 新しい terminal を開き `$ npm run upgrade-interactive` 等でパッケージを更新
12-
1. ブラウザーをリロードする
12+
1. `$ npm run upgrade-interactive` 等でパッケージを更新
1313

14-
これで terminal(「yarn start」タブ) 内で `start` スクリプトが実行される(通常はエラーとなる)後は必要に応じてコードの編集等を行う。
14+
作成したリポジトリを CodeSandbox でインポートすると terminal(「yarn start」タブ) 内で `start` スクリプトが実行される(通常はエラーとなる)後は必要に応じてコードの編集等を行う。
1515

1616
テストの実行は CodeSandbox 上では `npm run csb:test` を利用する。コマンドとしての実行を試す場合は `npm run start -- foo.txt` のように実行する。
1717

@@ -27,14 +27,39 @@ CodeSandbox 上でコードを編集し、GitHub Actions から npm レジスト
2727

2828
### npm publish
2929

30-
以下の設定後に GitHub で Release を Publish すると `npm pbulish` される。
31-
32-
1. GitHub にリポジトリを作成
33-
1. リポジトリの "Settings / Environment" から `npm_pkg` を作成
34-
1. Environment secrets に `NPM_TOKEN` を追加(内容は npm レジストリの Access Token)
30+
以下の設定後に GitHub で Release を Publish すると `npm publish` される。
3531

3632
なお、`prepublishOnly` 等は定義されていないので、手動で `npm publish` を実行してもビルドはされないので注意。
3733

34+
#### 設定
35+
36+
1. GitHub 上でリポジトリの "Settings / Environment" から `npm_pkg` および `gh_pkg` を作成
37+
1. `npm_pkg` の secrets に `NPM_TOKEN` を追加(内容は npm レジストリの Access Token)
38+
39+
現状では、`gh_pkg` への設定変更は行わない。
40+
41+
#### npm レジストリーへ publish
42+
43+
GitHub で Release を Publish すると `npm publish` される。ただし Pre Release のときは Publish されない。
44+
45+
なお、`npm publish`` --access public` は指定されていないので、scope を利用する場合は注意。
46+
47+
```console
48+
$ npm version patch
49+
$ git push origin
50+
$ gh release create v0.1.2 -t 0.1.2
51+
```
52+
53+
#### GitHub Packages へ publish
54+
55+
GitHub で Release を Publish すると `npm publish` される。このとき、scope はリポジトリの所有者(`$GITHUB_REPOSITORY` の所有者部分)へ置き換えられる。
56+
57+
```console
58+
$ npm version prerelease
59+
$ git push origin
60+
$ gh release create v0.1.2-5 -t 0.1.2-5 --target <branch>
61+
```
62+
3863
## 付録
3964

4065
`package.json` に記述する情報のテンプレート。`license` を変更したら `LICENSE` ファイルの変更も忘れずに。

0 commit comments

Comments
 (0)