27
27
pnpm install rollup
28
28
```
29
29
30
- しかし、マイナーバーアップデートに破壊的変更が含まれている可能性があります 。このハンズオンでは、このハンズオンにしたがって開発したchibiviteが将来にわたって動作することを保証するため、すべての依存パッケージのバージョンを指定してインストールします 。
30
+ しかし、まれにマイナーバーアップデートにも破壊的変更が含まれている場合があります 。このハンズオンでは、このハンズオンにしたがって開発したchibiviteが将来にわたって動作することを保証するため、すべての依存パッケージのバージョンを厳密に指定してインストールします 。
31
31
:::
32
32
33
33
以下のように ` package.json ` が書きかわっていれば成功です。
@@ -46,6 +46,7 @@ pnpm install rollup
46
46
47
47
つぎに、` rollup.config.mjs ` を作成して、以下のコードをコピーしましょう。
48
48
49
+ <!-- prettier-ignore -->
49
50
``` js{8-12}
50
51
import path from 'node:path'
51
52
import { fileURLToPath } from 'node:url'
@@ -109,18 +110,19 @@ node dist/cli.js
109
110
110
111
` bin/chibivite.js ` を以下のように変更して、` bin/chibivite.js ` から` dist/cli.js ` を呼び出すようにしましょう。これで、プレイグラウンドでビルドしたCLIを利用できるようになります。
111
112
113
+ <!-- prettier-ignore -->
112
114
``` js
113
115
#! / usr/ bin/ env node
114
116
115
117
function start () {
116
- console .log (' Hello, chibivite!' ) // [!code --]
118
+ console .log (' Hello, chibivite!' ) // [!code --]
117
119
return import (' ../dist/node/cli.js' ) // [!code ++]
118
120
}
119
121
120
122
start ()
121
123
```
122
124
123
- プレイグラウンドで以下のコマンドを実行してみましょう。ターミナルに ` Hello, chibivite! ` と表示されれば成功です。
125
+ プレイグラウンドで以下のコマンドを実行してみましょう。これまでと変わらずターミナルに ` Hello, chibivite! ` と表示されれば成功です。
124
126
125
127
``` bash
126
128
cd path/to/playground
@@ -133,6 +135,7 @@ pnpm run dev
133
135
::: info なぜ` bin/chibivite.js ` としてビルドしないのか
134
136
Rollupを以下のように設定してビルドの出力先を直接 ` bin/chibivite.js ` にしても、プレイグラウンドでビルドしたCLIを利用できます([ shebang] ( < https://en.wikipedia.org/wiki/Shebang_(Unix) > ) のあつかいは省略しています)。
135
137
138
+ <!-- prettier-ignore -->
136
139
``` js
137
140
export default defineConfig ({
138
141
input: path .resolve (__dirname , ' src/cli.mjs' ),
171
174
}
172
175
```
173
176
174
- つぎに、` rollu .config.mjs` を以下のように書きかえ、 ` src/cli.mjs ` を ` src/cli.ts ` にリネームしてTypeScriptファイルにしましょう 。
177
+ つぎに、` rollup .config.mjs` を以下のように書きかえましょう 。
175
178
179
+ <!-- prettier-ignore -->
176
180
``` js
177
181
import path from ' node:path'
178
182
import { fileURLToPath } from ' node:url'
@@ -183,24 +187,26 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url))
183
187
184
188
export default defineConfig ({
185
189
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 ++]
187
191
output: {
188
192
dir: ' ./dist' ,
189
193
format: ' esm' ,
190
194
},
191
- plugins: [
192
- // [!code ++]
195
+ plugins: [ // [!code ++]
193
196
typescript (), // [!code ++]
194
- ], // [!code ++]
197
+ ], // [!code ++]
195
198
})
196
199
` ` `
197
200
201
+ そして ` src/ cli .mjs ` を ` src/ cli .ts ` にリネームしてTypeScriptファイルにしましょう。
202
+
198
203
` ` ` bash
199
204
mv src/ cli .mjs src/ cli .ts
200
205
` ` `
201
206
202
207
では、Rollupでビルドしてみましょう。ただし、` src/ cli .ts ` のコードにTypeScript特有の内容がふくまれていないため、トランスパイルできているかを確かめることができません。検証のため、以下のようにコードを書き換えてビルドしてみましょう。` dist/ cli .js ` で型宣言が消えていれば成功です。
203
208
209
+ <!-- prettier-ignore -->
204
210
` ` ` js
205
211
type MyType = true // [!code ++]
206
212
console .log (' Hello, chibivite!' )
@@ -210,9 +216,72 @@ console.log('Hello, chibivite!')
210
216
pnpm run build
211
217
` ` `
212
218
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
+
213
278
検証がおわったら、型宣言は` src/ cli .ts ` から削除しましょう。
214
279
215
- TODO: tsconfig.jsonのセットアップ
280
+ <!-- prettier-ignore -->
281
+ ` ` ` js
282
+ type MyType = true // [!code --]
283
+ console .log (' Hello, chibivite!' )
284
+ ` ` `
216
285
217
286
---
218
287
0 commit comments