Denoのnpmパッケージサポート
概要
以下のように、
npm:<パッケージ名>@<バージョン>
というような形式で
import
を記述することで、
npmパッケージを利用できます
sh// https://www.npmjs.com/package/chalk の利用例
import chalk from "npm:chalk@5.0.1";
console.info(chalk.green("Hello, world!"));
また、
npxライクにコマンドを実行することもできます
shell$ deno run --allow-env --allow-read --allow-write npm:make-dir-cli@3.0.0 src/components
shell# 1. `chalk@5.3.0`をダウンロードし、`deno.json`の`imports`に`"chalk": "npm:chalk@5.3.0"`というマッピングを定義します
$ deno add npm:chalk@5.3.0
$ cat deno.json | jq .imports.chalk
"npm:chalk@5.3.0"
javascriptimport chalk from "chalk";
chalk.green("Hello");
--node-modules-dir
オプションを指定する
package.json{
"dependencies": {
"chalk": "^5.2.0",
"koa": "2"
},
"devDependencies": {
"cowsay": "^1.5.0"
},
"scripts": {
"hello": "cowsay Hello"
}
}
"bare specifier"の解決
javascriptimport chalk from "chalk"; // => `npm:chalk@^5.2.0`
import Koa from "koa"; // => `npm:koa@2`
const app = new Koa();
app.use((ctx) => {
ctx.body = "Hello world";
});
app.listen(3000, () => {
console.log(chalk.blue.bold("Listening on port 3000"));
});
shell$ deno task hello
# `package.json`の内容を元に、`deno run -A npm:cowsay@^1.5.0 hello`が実行されます。
BYONMは"Bring your own node_modules"の略です。
有効化方法
Deno v1)
--unstable-byonm
を指定する または
deno.jsonで
"unstable": ["byonm"]
を指定すると有効化できます。
create-*パッケージの実行
shell$ deno init --npm hono
ライフサイクルスクリプトの実行
Denoは
Bunと同様に、デフォルトでは
npmパッケージに含まれるライフサイクルスクリプトを実行しません
Denoの本体には
Node.js組み込みパッケージが搭載されており、
node:<パッケージ名>
で
import
できます。(※一部、未実装のため読み込めないパッケージやAPIなどもまだあります)
javascriptimport { EventEmitter } from "node:events";
const emitter = new EventEmitter();
emitter.on("foo", console.log);
emitter.emit("foo", "bar");
関連ページ