Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9409

【覚書】ts-node で Node.js のバッチを書く

$
0
0
TypeScript でバッチを書いたり簡易サーバー立てたりしたいと思ったけど、 あんまり余計なものを入れないでやりたいので、その方法を調べた。 基本 まず ts-node を入れる。 npm i typescript ts-node @types/node tsconfig.json はこうする。 { "compilerOptions": { "module": "ESNext" } } package.json は以下の内容を追記する。 --experimental-loader=ts-node/esm することで ts-node 経由で実行され、 --es-module-specifier-resolution=node することで import 時の拡張子省略が許容される。 こうしないと、ERR_UNKNOWN_FILE_EXTENSION だの ERR_MODULE_NOT_FOUND だの ERR_UNSUPPORTED_DIR_IMPORT だの言われる。 { "scripts": { "start": "node --experimental-loader=ts-node/esm --es-module-specifier-resolution=node path/to/index.ts" } } Cannot use import statement outside a module 対策 Cannot use import statement outside a module と怒られたら、 package.json に { "type": "modules" } を追記する。 もしルートの package.json に"type": "modules" を書きたくない場合は、 作業ディレクトリを分けて、その中に { "type": "modules" } とだけ書いた package.json を置けばいい。 ./ +- package.json (書き換えたくない) `- path/to/ +- index.ts `- package.json (これを追加する) ホットリロードに対応する nodemon を入れる。 npm i nodemon 以下の serve を追記する。 { "scripts": { "serve": "nodemon -x \"npm start\" -w path/to/**/* -e ts,json" } } これで path/to/**/* の ts, json ファイルが変更された時、npm start が実行される。 まとめ npm i typescript ts-node @types/node nodemon { "type": "module", "scripts": { "start": "node --experimental-loader=ts-node/esm --es-module-specifier-resolution=node path/to/index.ts", "watch": "nodemon -x \"npm start\" -w path/to/**/* -e ts,json" } } { "compilerOptions": { "module": "ESNext" } }

Viewing all articles
Browse latest Browse all 9409

Trending Articles