1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DenoAdvent Calendar 2024

Day 21

Deno「パッケージマネージャ始めました」

Last updated at Posted at 2024-12-20

Deno「パッケージはデザインミスとか言ってたけど、やっぱりパッケージマネージャ始めるわ」

Deno チームは 2018年のプロジェクト発表当初は package.jsonnode_modules によるパッケージマネジメント機能を、Node.js におけるデザインミスと考えていました。パッケージ概念の代わりにブラウザの URL import 機能をモデルとした、URL のツリー構造だけで依存を管理するエコシステム (deno.land/x) を数年に渡り構築してきました。

しかし、その後、Deno チームは deno.land/x はデザインミスと考えるようになり、代わりに JSR という新しいレジストリと jsr: という新しい URL スキームを Deno に実装し、公式にパッケージ概念を扱うようになりました。

(URL import/deno.land/x の何が間違いだったかの詳細は以下のブログ記事で解説されています)
https://deno.com/blog/http-imports

パッケージを扱うようになった結果、パッケージ管理関連のサブコマンドも複数実装されています。以下では、現在 deno コマンドに実装されているパッケージ管理関連のコマンドをまとめます。

deno install <pkg名...>

npm install <pkg名...> とほぼ同じ挙動のコマンドです。コマンドを実行すると deno.json の中の "imports" フィールドに指定されたパッケージを追加します。

Deno は JSR パッケージと npm パッケージを区別して扱うため、JSR パッケージの場合は jsr: npm パッケージの場合は npm: をパッケージ名の前につける必要があります。

deno add jsr:@std/path npm:chalk

上の例では JSR から @std/path を npm から chalk をインストールします

エイリアス: deno i deno add コマンドでも実行可能です

deno install (引数なし)

deno.json or package.json に記載されている依存をダウンロード & ローカルにキャッシュします。deno.json に記載されているパッケージは Deno のグローバルなキャッシュに保存されます。package.json に記載されているパッケージは、node_modules 以下に保存されます (pnpm と同様にグローバルキャッシュへの symlink として、node_modules 以下が構築されます)。

deno uninstall <pkg名...>

<pkg名...> で指定したパッケージを削除します。

エイリアス: deno remove でも実行可能です。

deno publish

deno.json もしくは jsr.json の内容に従って、プロジェクト内のファイルを JSR に publish します。

参考記事:

deno outdated

deno.jsonpackage.json に記載の依存の最新版の表示・更新ができます。

引数なしで実行すると依存とその最新バージョンを列挙します。JSR パッケージと npm パッケージ両方が対象になります。

$ deno outdated
┌──────────────────┬─────────┬─────────┬────────┐
│ Package          │ Current │ Update  │ Latest │
├──────────────────┼─────────┼─────────┼────────┤
│ jsr:@david/dax   │ 0.40.1  │ 0.40.1  │ 0.42.0 │
├──────────────────┼─────────┼─────────┼────────┤
│ npm:@types/mocha │ 10.0.9  │ 10.0.10 │ 10.0.0 │
├──────────────────┼─────────┼─────────┼────────┤
│ npm:tailwindcss  │ 3.4.15  │ 3.4.16  │ 3.4.16 │
├──────────────────┼─────────┼─────────┼────────┤
│ jsr:@std/assert  │ 0.224.0 │ 0.224.0 │ 1.0.9  │
└──────────────────┴─────────┴─────────┴────────┘

--update 引数をつけると、semver range に従う範囲の最新版に自動的にアップデートします。

$ deno outdated --update
Updated 2 dependencies:
 - npm:@types/mocha 10.0.9 -> 10.0.10
 - npm:tailwindcss  3.4.15 ->  3.4.16
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?