Summary
以下のマニュアルに書いてある内容。
About import maps
deno ではファイル単位の import で依存関係を解決する。
しかし毎回 https://deno.land/std.../server.ts
と書くのは面倒くさい。
そこで Import maps を使う。
main.ts と同じ階層に import_map.json
を用意して import path をマッピングした設定を記載しておく。
{ "imports": { "http/": "https://deno.land/std/http/" } }
Import maps は deno のアプリを起動するときに importmap
のオプション付きで実行することで使うことができるようになる。
$ deno run --allow-net --importmap=import_map.json --unstable main.ts
追記
import map
を使っていると Docker build した時に相対 path が解決されないぽいということがわかりました。
docker build -t emahiro-server-app . Sending build context to Docker daemon 6.144kB Step 1/9 : FROM hayd/alpine-deno:1.0.2 ---> 8f192534bc9d Step 2/9 : EXPOSE 8080 ---> Running in 040e0f46c354 Removing intermediate container 040e0f46c354 ---> 93235a5af9db Step 3/9 : WORKDIR /app ---> Running in 0ce7a5e2d58d Removing intermediate container 0ce7a5e2d58d ---> 11c92994ff42 Step 4/9 : USER deno ---> Running in 53835c147244 Removing intermediate container 53835c147244 ---> ab838d2a5833 Step 5/9 : COPY deps.ts . ---> a9cf8b680791 Step 6/9 : RUN deno cache deps.ts ---> Running in 0b7cb179006d Compile file:///app/deps.ts Removing intermediate container 0b7cb179006d ---> 623d7d2d90ee Step 7/9 : COPY . . ---> 158e09d31676 Step 8/9 : RUN deno cache main.ts ---> Running in 9b0b179277d5 error: relative import path "std/http/server.ts" not prefixed with / or ./ or ../ Imported from "file:///app/main.ts" The command '/bin/sh -c deno cache main.ts' returned a non-zero code: 1
import_map.json
を コンテナ内に copy してもこの相対ぱすを解消できないっぽいです。。。
この先よくわかってない...