Closed5
Svelte4 で追加された依存関係について
導入
svelte4 にアップデートしたところ依存関係が追加されていた。
依存パッケージ減らしたいマンな自分としては「いままでゼロだったのにドウシテ..?」という感じだったので、内容を確認した。
- svelte@3.59.2
(依存なし)
- svelte@4.0.0
+-- @ampproject/remapping@2.2.1
| +-- @jridgewell/gen-mapping@0.3.3
| | +-- @jridgewell/set-array@1.1.2
| | +-- @jridgewell/sourcemap-codec@1.4.15
| | `-- @jridgewell/trace-mapping@0.3.21
| `-- @jridgewell/trace-mapping@0.3.21
+-- @jridgewell/sourcemap-codec@1.4.15
+-- @jridgewell/trace-mapping@0.3.21
| +-- @jridgewell/resolve-uri@3.1.1
| `-- @jridgewell/sourcemap-codec@1.4.15
+-- acorn@8.11.3
+-- aria-query@5.3.0
| `-- dequal@2.0.3
+-- axobject-query@3.2.1
| `-- dequal@2.0.3
+-- code-red@1.0.4
| +-- @jridgewell/sourcemap-codec@1.4.15
| +-- @types/estree@1.0.5
| +-- acorn@8.11.3
| +-- estree-walker@3.0.3
| | `-- @types/estree@1.0.5
| `-- periscopic@3.1.0
+-- css-tree@2.3.1
| +-- mdn-data@2.0.30
| `-- source-map-js@1.0.2
+-- estree-walker@3.0.3
| `-- @types/estree@1.0.5
+-- is-reference@3.0.2
| `-- @types/estree@1.0.5
+-- locate-character@3.0.0
+-- magic-string@0.30.5
| `-- @jridgewell/sourcemap-codec@1.4.15
`-- periscopic@3.1.0
+-- @types/estree@1.0.5
+-- estree-walker@3.0.3
| `-- @types/estree@1.0.5
`-- is-reference@3.0.2
変更理由を調べる
-
https://github.com/sveltejs/svelte/pull/8644
- ここでパッケージ構成が変わった
-
https://github.com/sveltejs/svelte/pull/8613
- ここで dependencies が追加
-
https://github.com/sveltejs/svelte/pull/8523
- #8613 で取り込まれたの元のPR
PR#8523 によると「 svelte が依存パッケージをバンドルして配布するより依存関係を明示した方がユーザが audit できるし svelte のダウンロードサイズも節約できるよね」っていうことらしい。
つまり、v3 でも依存ライブラリがなかったわけではなく、バンドルして配布していたようだ(無知)
実際 npm install --save-dev svelte@3.59.2
してソースコードを覗いてみると compiler.js (compiler.mjs) に Acorn などが入っているのが確認できる
具体的にどんなパッケージに依存しているのか調べたところ、半分は Rich-Harris ( svelte の生みの親) が公開しているパッケージだった。
- periscopic -- Utility for analyzing scopes belonging to an ESTree-compliant AST
- magic-string -- Manipulate strings like a wizard
- locate-character -- Get the line and column number of a particular character in a string.
- estree-walker -- Traverse an ESTree-compliant AST
- is-reference -- Determine whether an AST node is a reference
- code-red -- Experimental toolkit for writing x-to-JavaScript compilers
他のパッケージも Acorn (js パーサー) や sourcemap 生成関連のもので、js コンパイラの svelte にとって必須といって良さそうだった
結び
バンドルされると見かけ上はシンプルになるが、オープンになっている方がユーザ側での脆弱性の対応もしやすくなる(できる可能性が高まるというか、任せっきりにならないというか)のでよいと思った。
このスクラップは2024/01/14にクローズされました