TypeScript + webpack + npm + claspでGAS開発
完成形
├ dist/
└ main.js (コンパイルされたjsファイル)
│ └ appsscript.json
├ src/ (開発を行うディレクトリ)
├ .clasp.json
├ package.json
├ tsconfig.json
├ webpack.config.js
├ yarn.lock
1. パッケージのインストール
package.jsonを作成
yarn init -y
必要なパッケージをインストール
yarn add -D @google/clasp typescript ts-loader webpack webpack-cli gas-webpack-plugin cpx @types/google-apps-script @types/node
2. TypeScript の設定
tsconfig.jsonを作成する
yarn tsc --init
お好みで設定してください。
{
"compilerOptions": {
"sourceMap": true,
"target": "es5",
"module": "es2015",
"moduleResolution": "node"
}
}
3. webpack.config.js を作成
webpack.config.js ファイルを作成して以下のコードをコピペ
const path = require('path');
const GasPlugin = require('gas-webpack-plugin');
module.exports = {
entry: {
main: path.join(__dirname, 'src', 'main.ts')
},
output: {
filename: '[name].js',
path: path.join(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.ts$/,
use: 'ts-loader'
}
]
},
resolve: {
extensions: [
'.ts',
'.js'
]
},
plugins: [
new GasPlugin(),
]
};
4. claspでGASプロジェクトを作成
googleにログイン
ブラウザが開かれるのでアカウントを選択してログインする
yarn clasp login
プロジェクトを作成する
今回はstandalone
を選択
yarn clasp create [プロジェクト名]
? Create which script? (Use arrow keys)
❯ standalone
docs
sheets
slides
forms
webapp
api
.clasp.json ファイルが作成されるのでそれを編集する
rootDir
にルートディレクトリdist
を設定
{
"scriptId":"[スクリプトID]",
"rootDir": "dist"
}
5. 開発
src
ディレクトリで開発を行うためsrc
ディレクトリを作成する
main.ts
ファイルを作成し、サンプルコードを書いていく
declare var global: any;
global.doGet = () => {
return ContentService.createTextOutput('Hello World');
}
yarnのbuildコマンドとdeployコマンドを作成
{
"scripts": {
"build": "rimraf dist && webpack && cpx appsscript.json dist",
"deploy": "yarn build && clasp push"
}
}
gasにdeployする
yarn deploy
6. 公開する
上記のコードをWebアプリケーションとして公開するとこのような感じになります。
以上です。
Author And Source
この問題について(TypeScript + webpack + npm + claspでGAS開発), 我々は、より多くの情報をここで見つけました https://qiita.com/IamK/items/b8b9c17df548d490b566著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .