😎

denoのすごい公式ツールたち(deno fmt, deno lint)

2021/09/23に公開

今までLinterなど導入するのめんどくさいなと思ってたんですが、denoだと最初から様々なツールが入ってて驚いたので紹介します

deno fmt

Rustで書かれたdprintという高速なフォーマッターが使われている、昔はPrettierが使われていた

対応しているもの

言語 文書
JS/TS マークダウン
JSX/TSX Json/Jsonc

使い方

通常
deno fmt
ファイル指定
deno fmt myfile.ts
確認
deno fmt --check
自動
deno fmt --watch myfile.ts

今まで設定ファイルがなくてフラグ使うしかなったのですが、最近deno.jsonが追加されました

スキーマはこちらで公開されています、セミコロン無効化ない..
https://deno.land/x/deno@v1.14.1/cli/schemas/config-file.v1.json
https://deno.land/manual/contributing/style_guide

個人的にダブルクォーテーションが嫌いなのとnode_modulesをフォーマットしてほしくないので以下の設定をしています

{
	"fmt": {
		"files": {
			"exclude": ["node_modules"]
		},
		"options": {
			"useTabs": false,
			"singleQuote": true
		}
	}
}

VSCodeでも使えるので入れ方
https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno
VSCodeの設定ファイルを編集

{
	"deno.lint": true,
	"deno.path": "/usr/local/bin/deno",
	"deno.config": ".config/deno.json",
	"[json]": {
		"editor.defaultFormatter": "denoland.vscode-deno"
	},
	"[jsonc]": {
		"editor.defaultFormatter": "denoland.vscode-deno"
	},
	"[javascript]": {
		"editor.defaultFormatter": "denoland.vscode-deno"
	},
	"[typescript]": {
		"editor.defaultFormatter": "denoland.vscode-deno"
	},
}

現在、フォーマットオンペーストまたはフォーマットオンタイプの機能は提供していません。

deno lint

使い方

通常
deno lint
ルール
        --rules                            
            List available rules

        --rules-exclude=<rules-exclude>    
            Exclude lint rules

        --rules-include=<rules-include>    
            Include lint rules

ルールの確認
https://lint.deno.land/

deno bundle

Rustで書かれたswcが使われている

すべての依存関係を含んだ一つのJavaScriptファイルを出力します。

nodeの場合でもswcを導入することで快適になった

npm i -g @swc/cli @swc/core chokidar
swc FILE -o output.js -C jsc.target=es2016

swcts-nodeでも使えます
console.log("Hello")をするだけのプログラムでts-nodeの速度比較をしました

swc無し
real    0m5.118s
user    0m6.010s
sys     0m0.329s
swc使用
real    0m1.909s
user    0m1.268s
sys     0m0.201s

https://typestrong.org/ts-node/docs/transpilers/

使い方

通常
deno bundle <source_file> [out_file]
自動
deno bundle --watch <source_file> [out_file]

deno compile

JS/TSをコンパイルしてくれる

使い方

通常
deno compile <SCRIPT_ARG>

Deno は現在 Windows x64、macOS ARM そして Linux x64 へのコンパイルをサポートします。

終わりに

便利な拡張機能見つけました
https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens
リンターなどのエラーをエディター側に表示してくれます

Love 🦕

Discussion