標準ライブラリ
Deno は標準モジュールを提供しています。標準モジュールはコアチームに審査され、Deno で動作することが保証されています。
標準ライブラリは https://deno.land/std/ で利用可能です。
バージョニングと安定性
標準ライブラリはまだ stable ではありません。そのため Deno とは異なるバージョニングが行われています。 最新リリースは https://deno.land/std/ か https://deno.land/std/version.ts で確認できます。 標準ライブラリは Deno のリリースに合わせてリリースされます。
意図せぬ変更を避けるために標準ライブラリのバージョンを常に固定してインポートすることを強く推奨します。 たとえば、コードの master ブランチにリンクするのは避けてください。master ブランチはいつでも変更される可能性があり、コンパイルエラーや予期せぬ挙動を潜在的に引き起こします。
// master からのインポート。これは避けてください
import { copy } from "https://deno.land/std/fs/copy.ts";
それよりは、std ライブラリの特定のバージョンを使えば、コードが固定されていて変更されません。
// imports from v0.50.0 of std, never changes
import { copy } from "https://deno.land/std@$STD_VERSION/fs/copy.ts";
トラブルシューティング
標準ライブラリの提供するいつくかのモジュールは Deno の unstable な API を使用しています。
そういったモジュールを CLI の --unstable
フラグ抜きで実行すると、Deno
名前空間に API が存在しないことを知らせる TypeScript エラーがいくつも発生して終了します。
// main.ts
import { copy } from "https://deno.land/std@$STD_VERSION/fs/copy.ts";
copy("log.txt", "log-old.txt");
$ deno run --allow-read --allow-write main.ts
Compile file:///dev/deno/main.ts
Download https://deno.land/std@$STD_VERSION/fs/copy.ts
Download https://deno.land/std@$STD_VERSION/fs/ensure_dir.ts
Download https://deno.land/std@$STD_VERSION/fs/_util.ts
error: TS2339 [ERROR]: Property 'utime' does not exist on type 'typeof Deno'.
await Deno.utime(dest, statInfo.atime, statInfo.mtime);
~~~~~
at https://deno.land/std@$STD_VERSION/fs/copy.ts:90:16
TS2339 [ERROR]: Property 'utimeSync' does not exist on type 'typeof Deno'.
Deno.utimeSync(dest, statInfo.atime, statInfo.mtime);
~~~~~~~~~
at https://deno.land/std@$STD_VERSION/fs/copy.ts:101:10
この問題を解決するには --unstable
フラグを付与する必要があります。
deno run --allow-read --allow-write --unstable main.ts
API から生じるエラーの原因が unstable であるかどうかを確かめるには、 lib.deno.unstable.d.ts
宣言ファイルを確認してください。
この問題は近い将来に修正されるはずです。依存している特定のモジュールがこのフラグなしでコンパイルできるなら、遠慮なくフラグを省略して構いません。