Skip to content

Commit 2e7f689

Browse files
committed
docs: add contents
1 parent 4a26785 commit 2e7f689

File tree

2 files changed

+82
-10
lines changed

2 files changed

+82
-10
lines changed

docs/.vitepress/config/ja.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,10 @@ export const jaConfig = defineConfig({
6868
link: '/ja/hands-on/project-setup',
6969
},
7070
{ text: 'Hello, chibivite!', link: '/ja/hands-on/hello-chibivite' },
71-
// { text: 'chibivite CLIのビルド', link: '/ja/hands-on/cli-build-setup' },
71+
{
72+
text: 'chibivite CLIのビルド',
73+
link: '/ja/hands-on/cli-build-setup',
74+
},
7275
],
7376
},
7477
],

docs/content/ja/hands-on/cli-build-setup.draft.md docs/content/ja/hands-on/cli-build-setup.md

+78-9
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pnpm install [email protected]
2727
pnpm install rollup
2828
```
2929

30-
しかし、マイナーバーアップデートに破壊的変更が含まれている可能性があります。このハンズオンでは、このハンズオンにしたがって開発したchibiviteが将来にわたって動作することを保証するため、すべての依存パッケージのバージョンを指定してインストールします
30+
しかし、まれにマイナーバーアップデートにも破壊的変更が含まれている場合があります。このハンズオンでは、このハンズオンにしたがって開発したchibiviteが将来にわたって動作することを保証するため、すべての依存パッケージのバージョンを厳密に指定してインストールします
3131
:::
3232

3333
以下のように `package.json` が書きかわっていれば成功です。
@@ -46,6 +46,7 @@ pnpm install rollup
4646

4747
つぎに、`rollup.config.mjs` を作成して、以下のコードをコピーしましょう。
4848

49+
<!-- prettier-ignore -->
4950
```js{8-12}
5051
import path from 'node:path'
5152
import { fileURLToPath } from 'node:url'
@@ -109,18 +110,19 @@ node dist/cli.js
109110

110111
`bin/chibivite.js`を以下のように変更して、`bin/chibivite.js`から`dist/cli.js`を呼び出すようにしましょう。これで、プレイグラウンドでビルドしたCLIを利用できるようになります。
111112

113+
<!-- prettier-ignore -->
112114
```js
113115
#!/usr/bin/env node
114116

115117
function start() {
116-
console.log('Hello, chibivite!') // [!code --]
118+
console.log('Hello, chibivite!') // [!code --]
117119
return import('../dist/node/cli.js') // [!code ++]
118120
}
119121

120122
start()
121123
```
122124

123-
プレイグラウンドで以下のコマンドを実行してみましょう。ターミナルに `Hello, chibivite!` と表示されれば成功です。
125+
プレイグラウンドで以下のコマンドを実行してみましょう。これまでと変わらずターミナルに `Hello, chibivite!` と表示されれば成功です。
124126

125127
```bash
126128
cd path/to/playground
@@ -133,6 +135,7 @@ pnpm run dev
133135
::: info なぜ`bin/chibivite.js`としてビルドしないのか
134136
Rollupを以下のように設定してビルドの出力先を直接 `bin/chibivite.js` にしても、プレイグラウンドでビルドしたCLIを利用できます([shebang](<https://en.wikipedia.org/wiki/Shebang_(Unix)>)のあつかいは省略しています)。
135137

138+
<!-- prettier-ignore -->
136139
```js
137140
export default defineConfig({
138141
input: path.resolve(__dirname, 'src/cli.mjs'),
@@ -171,8 +174,9 @@ pnpm install -D @rollup/[email protected] [email protected]
171174
}
172175
```
173176

174-
つぎに、`rollu.config.mjs`を以下のように書きかえ、`src/cli.mjs``src/cli.ts` にリネームしてTypeScriptファイルにしましょう
177+
つぎに、`rollup.config.mjs`を以下のように書きかえましょう
175178

179+
<!-- prettier-ignore -->
176180
```js
177181
import path from 'node:path'
178182
import { fileURLToPath } from 'node:url'
@@ -183,24 +187,26 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url))
183187

184188
export default defineConfig({
185189
input: path.resolve(__dirname, 'src/cli.mjs'), // [!code --]
186-
input: path.resolve(__dirname, 'src/cli.ts'), // [!code ++]
190+
input: path.resolve(__dirname, 'src/cli.ts'), // [!code ++]
187191
output: {
188192
dir: './dist',
189193
format: 'esm',
190194
},
191-
plugins: [
192-
// [!code ++]
195+
plugins: [ // [!code ++]
193196
typescript(), // [!code ++]
194-
], // [!code ++]
197+
], // [!code ++]
195198
})
196199
```
197200
201+
そして `src/cli.mjs``src/cli.ts` にリネームしてTypeScriptファイルにしましょう。
202+
198203
```bash
199204
mv src/cli.mjs src/cli.ts
200205
```
201206
202207
では、Rollupでビルドしてみましょう。ただし、`src/cli.ts`のコードにTypeScript特有の内容がふくまれていないため、トランスパイルできているかを確かめることができません。検証のため、以下のようにコードを書き換えてビルドしてみましょう。`dist/cli.js`で型宣言が消えていれば成功です。
203208
209+
<!-- prettier-ignore -->
204210
```js
205211
type MyType = true // [!code ++]
206212
console.log('Hello, chibivite!')
@@ -210,9 +216,72 @@ console.log('Hello, chibivite!')
210216
pnpm run build
211217
```
212218
219+
---
220+
221+
最後に `tsconfig.json` をセットアップしてTypeScriptの設定を完了しましょう。
222+
223+
`packages/chibivite/tsconfig.json` を作成して、以下のコードをコピーしましょう。
224+
225+
<!-- prettier-ignore -->
226+
```json
227+
{
228+
"compilerOptions": {
229+
"baseUrl": ".",
230+
"outDir": "dist",
231+
"target": "ESNext",
232+
"module": "ESNext",
233+
"moduleResolution": "Bundler",
234+
"moduleDetection": "force",
235+
"lib": ["ESNext", "DOM"],
236+
"sourceMap": true,
237+
"resolveJsonModule": true,
238+
"isolatedModules": true,
239+
"esModuleInterop": true,
240+
"allowJs": true,
241+
"strict": true,
242+
"skipLibCheck": true,
243+
"noUncheckedIndexedAccess": true
244+
}
245+
}
246+
```
247+
248+
ここでは `tsconfig.json` の内容を詳細に説明することはしませんが、おおよそViteの設定を踏襲しています。
249+
250+
つぎに、 `@rollup/plugin-typescript` がこの `tsconfig.json` を読み込むようにしましょう。ソースマップを出力するために、Rollupの `output` オプションにも変更をくわえます。
251+
252+
<!-- prettier-ignore -->
253+
```js
254+
// ...
255+
export default defineConfig({
256+
// ...
257+
output: {
258+
dir: './dist',
259+
format: 'esm',
260+
sourcemap: true, // [!code ++]
261+
},
262+
plugins: [
263+
typescript(), // [!code --]
264+
typescript({ // [!code ++]
265+
tsconfig: path.resolve(__dirname, 'tsconfig.json'), // [!code ++]
266+
sourceMap: true, // [!code ++]
267+
}),
268+
],
269+
})
270+
```
271+
272+
では、Rollupでビルドしてみましょう。`dist/cli.js`で型宣言が消えていれば成功です。
273+
274+
```bash
275+
pnpm run build
276+
```
277+
213278
検証がおわったら、型宣言は`src/cli.ts`から削除しましょう。
214279
215-
TODO: tsconfig.jsonのセットアップ
280+
<!-- prettier-ignore -->
281+
```js
282+
type MyType = true // [!code --]
283+
console.log('Hello, chibivite!')
284+
```
216285
217286
---
218287

0 commit comments

Comments
 (0)