ASIDE v1.5.0 Migration Guide
ASIDE v1.5.0 への移行ガイド
English follows Japanese.
概要
ASIDE の バージョン v1.5.0 未満は以下の問題があった。
- ESlint の config が
.eslintrc.json形式のままだった- ESlint は v9 系から Flat Config 形式を推奨しているが、未対応
- v8 系の 8.57.1 で止まっていた
- gts の互換性がなくなっていた
- gts 7.0.0 から ESlint の 9.37.0 が採用されているが、上記の理由で lint コマンドが失敗する
ASIDE 1.5.0 は、eslint.config.js 等を提供するようになったため、「新しいプロジェクトを作る」場合は問題ない。
既存の v1.4.6 以下(1.5.0未満)のプロジェクトを v1.5.0 以上にアップデートする場合にどのようにすれば良いか、実際にアップデートした際の手順をまとめる。
ファイルの準備
tsconfig.json の更新
変更点:
"moduleResolution": "bundler",に変更"lib": ["es2020", "dom"],となり"dom"が追加"types": ["jest", "node", "google-apps-script"]が追加
--- tsconfig.json 2025-07-26 18:54:37.959618437 +0900
+++ ../aside_v1.5.0_test/tsconfig.json 2026-06-20 12:57:13.365750560 +0900
@@ -2,8 +2,8 @@
"compilerOptions": {
"target": "es2020",
"module": "es2020",
- "lib": ["es2020"],
- "moduleResolution": "node",
+ "lib": ["es2020", "dom"],
+ "moduleResolution": "bundler",
"outDir": "dist",
"rootDir": ".",
"strict": true,
@@ -12,7 +12,8 @@
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"allowUnreachableCode": false,
- "allowUnusedLabels": false
+ "allowUnusedLabels": false,
+ "types": ["jest", "node", "google-apps-script"]
},
"include": ["src/**/*", "test/**/*", "rollup.config.mjs"]
}
.eslintrc.json から eslint.config.js への移行
.eslintrc.json を削除し、以下の内容で eslint.config.js を作成する。必要に応じて内容を変更する。
{
"env": {
"browser": true,
"node": true,
"es2020": true
},
"extends": ["./node_modules/gts", "prettier"],
"overrides": [],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"project": "./tsconfig.json"
},
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error"
},
"ignorePatterns": ["template/**/*", "template-ui/**/*"]
}
のような形式であった。
- env, plugins 部分は削除
- project はそのまま
- gts は extends の代わりに require
- ignorePatterns は、
eslint.ignores.jsに移動(後述)
let customConfig = [];
let hasIgnoresFile = false;
try {
require.resolve('./eslint.ignores.cjs');
hasIgnoresFile = true;
} catch {
// eslint.ignores.cjs doesn't exist
}
if (hasIgnoresFile) {
const ignores = require('./eslint.ignores.cjs');
customConfig = [{ignores}];
} else {
try {
require.resolve('./eslint.ignores.js');
const ignores = require('./eslint.ignores.js');
customConfig = [{ignores}];
} catch {
// eslint.ignores.js doesn't exist
}
}
module.exports = [
...customConfig,
...require('gts'),
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
parserOptions: {
project: ['./tsconfig.json'],
},
},
},
];
.eslintignore から eslint.ignores.js への移行
.eslintignore を削除し、以下の内容で eslint.ignores.js を作成する。必要に応じて内容を変更する。
module.exports = [
'**/node_modules/**',
'**/.angular/**',
'**/dist/**',
'**/coverage/**',
'**/out-tsc/**',
'**/tmp/**',
'**/build/**',
'**/*.log',
'**/template/**',
'**/template-ui/**',
];
.prettierrc.json から .prettierrc.js への移行
.prettierrc.json を削除し、以下の内容で .prettierrc.js を作成する。必要に応じて内容を変更する。
gts の .prettierrc.json を参照するようになっている。
module.exports = {
...require('gts/.prettierrc.json'),
overrides: [
{
files: '*.html',
options: {
parser: 'angular',
printWidth: 100,
},
},
],
};
パッケージのアップデート、package.json の更新
メジャーアップデートが行われ、かつ、動作影響が大きい以下のパッケージをアップデートする。
npm install eslint@10.5.0 gts@7.0.0 @typescript-eslint/eslint-plugin@8.61.1
その後
npm run lint && npm run test && npm run build
を実行し、エラーがないことを確認する。
試験した環境では、linter の癖が変わったため、ソースコードに差分が発生したので、その差分をコミットした。
{} 内のスペースが削除されている。
その他、必要に応じて、clasp, @types/google-apps-script, typescript, jest, ts-jest, rollup-plugin-typescript2, eslint-… などのパッケージもアップデートする。
試験した環境では以下のようにしつつ、npm run lint && npm run test && npm run build を実行し、エラーがないことを確認した。
npm update typescript
npm update clasp @types/google-apps-script
npm update jest ts-jest
npm update rollup-plugin-typescript2
メモ
npx @google/aside init
✔ Generate package.json? … No / Yes
✔ Adding scripts...
✔ Saving package.json...
✔ Installing dependencies...
✔ Installing src template...
✔ Installing test template...
✔ Script ID (optional): …
✔ Script ID for production environment (optional): …
✔ Creating aside_v1.5.0_test...
-> Google Sheets Link: https://drive.google.com/open?id=...
-> Apps Script Link: https://script.google.com/d/.../edit
npm notice
npm notice New minor version of npm available! 11.12.1 -> 11.17.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.17.0
npm notice To update run: npm install -g npm@11.17.0
npm notice
# エラーなし
npm run deploy
ls するとルートレベルのファイルは以下である。
LICENSE
appsscript.json
dist
eslint.config.js
eslint.ignores.js
jest.config.json
license-config.json
license-header.txt
node_modules
package-lock.json
package.json
rollup.config.mjs
src
test
tsconfig.json
ASIDE v1.5.0 Migration Guide
Overview
Versions of ASIDE prior to v1.5.0 had the following issues:
- The ESLint config was in the
.eslintrc.jsonformat.- ESLint has recommended the Flat Config format since v9, but it was not supported.
- It was locked to ESLint v8.57.1.
- Compatibility with
gtswas broken.- From version gts 7.0.0, ESLint 9.37.0 has been adopted, but due to the reason above, running the
lintcommand fails.
- From version gts 7.0.0, ESLint 9.37.0 has been adopted, but due to the reason above, running the
Since ASIDE v1.5.0 now provides eslint.config.js, there are no issues when creating a new project.
This guide outlines the actual steps to take when upgrading an existing project from v1.4.6 or below (under v1.5.0) to v1.5.0 or above.
Preparing Files
Updating tsconfig.json
Changes:
- Changed
"moduleResolution": "node"to"moduleResolution": "bundler". "dom"was added, resulting in"lib": ["es2020", "dom"]."types": ["jest", "node", "google-apps-script"]was added.
--- tsconfig.json 2025-07-26 18:54:37.959618437 +0900
+++ ../aside_v1.5.0_test/tsconfig.json 2026-06-20 12:57:13.365750560 +0900
@@ -2,8 +2,8 @@
"compilerOptions": {
"target": "es2020",
"module": "es2020",
- "lib": ["es2020"],
- "moduleResolution": "node",
+ "lib": ["es2020", "dom"],
+ "moduleResolution": "bundler",
"outDir": "dist",
"rootDir": ".",
"strict": true,
@@ -12,7 +12,8 @@
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"allowUnreachableCode": false,
- "allowUnusedLabels": false
+ "allowUnusedLabels": false,
+ "types": ["jest", "node", "google-apps-script"]
},
"include": ["src/**/*", "test/**/*", "rollup.config.mjs"]
}
Migrating from .eslintrc.json to eslint.config.js
Delete .eslintrc.json and create eslint.config.js with the following content. Modify the content as necessary.
The original .eslintrc.json had a structure like:
{
"env": {
"browser": true,
"node": true,
"es2020": true
},
"extends": ["./node_modules/gts", "prettier"],
"overrides": [],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"project": "./tsconfig.json"
},
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error"
},
"ignorePatterns": ["template/**/*", "template-ui/**/*"]
}
Key changes:
envandpluginssections are removed.projectremains the same.gtsis required instead of referenced inextends.ignorePatternsis moved toeslint.ignores.js(explained below).
let customConfig = [];
let hasIgnoresFile = false;
try {
require.resolve('./eslint.ignores.cjs');
hasIgnoresFile = true;
} catch {
// eslint.ignores.cjs doesn't exist
}
if (hasIgnoresFile) {
const ignores = require('./eslint.ignores.cjs');
customConfig = [{ignores}];
} else {
try {
require.resolve('./eslint.ignores.js');
const ignores = require('./eslint.ignores.js');
customConfig = [{ignores}];
} catch {
// eslint.ignores.js doesn't exist
}
}
module.exports = [
...customConfig,
...require('gts'),
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
parserOptions: {
project: ['./tsconfig.json'],
},
},
},
];
Migrating from .eslintignore to eslint.ignores.js
Delete .eslintignore and create eslint.ignores.js with the following content. Modify the content as necessary.
module.exports = [
'**/node_modules/**',
'**/.angular/**',
'**/dist/**',
'**/coverage/**',
'**/out-tsc/**',
'**/tmp/**',
'**/build/**',
'**/*.log',
'**/template/**',
'**/template-ui/**',
];
Migrating from .prettierrc.json to .prettierrc.js
Delete .prettierrc.json and create .prettierrc.js with the following content. Modify the content as necessary.
It is configured to extend the .prettierrc.json from the gts package.
module.exports = {
...require('gts/.prettierrc.json'),
overrides: [
{
files: '*.html',
options: {
parser: 'angular',
printWidth: 100,
},
},
],
};
Package Updates and Updating package.json
Install and update the following key packages, which undergo major version upgrades and have a significant impact on behavior:
npm install eslint@10.5.0 gts@7.0.0 @typescript-eslint/eslint-plugin@8.61.1
Afterward, run the following commands and confirm there are no errors:
npm run lint && npm run test && npm run build
In the environment we tested, differences occurred in the source code due to changes in linter formatting rules (e.g., spaces inside {} were removed), so we committed those changes.
As necessary, update other packages such as clasp, @types/google-apps-script, typescript, jest, ts-jest, rollup-plugin-typescript2, eslint-..., etc.
In our test environment, we updated the packages with the following commands while ensuring that npm run lint && npm run test && npm run build completed successfully without any errors:
npm update typescript
npm update clasp @types/google-apps-script
npm update jest ts-jest
npm update rollup-plugin-typescript2
Notes
npx @google/aside init
✔ Generate package.json? … No / Yes
✔ Adding scripts...
✔ Saving package.json...
✔ Installing dependencies...
✔ Installing src template...
✔ Installing test template...
✔ Script ID (optional): …
✔ Script ID for production environment (optional): …
✔ Creating aside_v1.5.0_test...
-> Google Sheets Link: https://drive.google.com/open?id=...
-> Apps Script Link: https://script.google.com/d/.../edit
npm notice
npm notice New minor version of npm available! 11.12.1 -> 11.17.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.17.0
npm notice To update run: npm install -g npm@11.17.0
npm notice
# No errors
npm run deploy
Running ls reveals the following files at the root level:
LICENSE
appsscript.json
dist
eslint.config.js
eslint.ignores.js
jest.config.json
license-config.json
license-header.txt
node_modules
package-lock.json
package.json
rollup.config.mjs
src
test
tsconfig.json

ディスカッション
コメント一覧
まだ、コメントがありません