Googl Apps Script Library を TypeScript(clasp 利用)で作成するためのスターター。
実装中。
スターターを利用するための設定。
このリポジトリをテンプレートとして新しいリポジトリを作成します。
$ gh repo create <name> --template https://github.com/hankei6km/my-starter-gas-lib-ts --public
で作成$ npm run upgrade-interactive
等でパッケージを更新
GitHub 上に作成されたリポジトリには types
ラベルを追加します(型定義の公開用に使います)。
事前に以下の名前を決めておきます。
NAMESPACE
- 型定義の namespace に利用する名前BASENAME
- ソースファイルなどに使う名前
例: NAMESPACE=MD2html
、 BASENAME=md2htnml
名前を決めたら以下のように設定します。
package.json
の変更
- パッケージ名などを変更
- バージョンを
0.0.0
へ変更
src/md2html.ts
内のnamespace
をNAMESPACE
にあわせて変更src/md2html.ts
のファイル名をBASENNAME
にあわせて変更src/main.ts
内のexport
とinport
を変更src/index.js
内のライセンスバナー- タイトルと
.zip
ファイル名を BASENAME にあわせる
- タイトルと
test/md2html.spec.ts
test/build/md2html_src.js
のファイル名をBASENAME
にあわせて変更
scripts/build.sh
のNAMESPACE
とBASENAME
を変更scripts/test-build.sh
の変更BASENAME
を事前に決めた値へ変更
.github/workflows/deploy.yaml
Make archilve file
ステップの.zip
ファイル名を BASENAME にあわせて変更Upload archive file to release Asset
ステップの.zip
ファイル名を BASENAME にあわせて変更
LICENSE
等を新しいライブラリーにあわせて変更(付録にテンプレート)
$ clasp create
などでスタンドアローンのプロジェクトを 2 つ作成
- 1 つは開発用、1 つは公開用として利用
- テンプレートの
.clasp.json
のscriptId
を開発用プロジェクトのものへ変更
プロジェクトへのデプロイや型定義を npm レジストリーへ登録するために以下の environment を作成します。
dev
- 開発用プロジェクトにclasp push
とclasp deploy
する設定用rel
- 公開用プロジェクトにclasp push
とclasp deploy
する設定用
それぞれに SECRET が必要です。
GAS_SCRIPT_ID
- scriptIdACCESS_TOKEN
-.clasprc
からコピーSCOPE
-.clasprc
からコピーID_TOKEN
-.clasprc
からコピーEXPIRY_DATE
-.clasprc
からコピーREFRESH_TOKEN
-.clasprc
からコピーCLIENT_ID
-.clasprc
からコピーCLIENT_SECRET
-.clasprc
からコピー
GAS_SCRIPT_ID
は dev と rel 用のものを設定します。 開発と公開で異なるクレデンシャルが必要ならその他も環境にあわせて設定します。
npm_pkg
- npm レジストリーへnpm publish
するための設定用
以下の SECRET が必要です。
NPM_TOKEN
- npm レジストリーの Access Token
-
src/${BASENAME}.ts
の namespace 内に処理を記述しますここでの記述はライブラリーから利用される他に、TypeScript の型定義としても利用されます。
-
src/main.ts
でエクスポートする定義(namespace)を記述しますエクスポートされた定義は、以下の
src/index.js
から参照できる_entry_point_
のメンバーとして登録されます。 -
src/index.js
にライブラリーとして参照できる関数などを記述しますここでの記述は通常の Google Apps Script ライブラリーとして振る舞います。
_entry_point_
のメンバーなどを利用して関数を記述します。
NPM パッケージを追加できます。ただし、Node.js のビルトインライブラリーを利用しているとビルドできないこともあります。
-
test/xxxx.spec.ts
にテストを記述しますJest フレームワークを利用しています。また、テストは native ESM として実行されます。
-
test/build/xxx_src.js
にビルドされたコード用のテストを記述しますsrc/index.js
用のテストを記述します。src/idnex.js
とは結合された状態で実行されるのでimport
は行いません。
- npm run build - ライブラリーとしてビルドします
- npm run test - テストを実行します
- npm run test:build - ライブラリーとしてビルドされた関数をテストします
- npm run push -
clasp push
します(ビルドの自動実行は行われなし) - npm run deploy -
clasp delpoy
します
プルリクエストを作成するなどで main
以外のブランチへプッシュすると、ビルドされたものを開発用のライブラリーへプッシュします。
GitHub 上でリリースを公開すると開発と公開用ライブラリーへプッシュとデプロイが行われます。
リリースノートの 1 行目がバージョンの説明として利用されます。
リリースノートに含まれているプルリクエストのラベルに types
が設定されていると型定義を npm レジストリーへ公開します。
なお、デプロイ時に $ npm version minor
でバージョンを更新しておくとプロジェクトでデプロイされているバージョン番号と package.json
のマイナーバージョンが一致します。
package.json
に記述する情報のテンプレート。license
を変更したら LICENSE
ファイルの変更も忘れずに。
"name": "<package-name>",
"version": "0.1.0",
"description": "<description>",
"author": "user <mail addr> (website url)",
"license": "MIT",
"repository": {
"type": "git",
"url": "git://github.com/<user>/<repository>.git"
},
"bugs": {
"url": "https://github.com/<user>/<repository>/issues"
},
"keywords": []
MIT License
Copyright (c) 2022 hankei6km