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

Goのプロジェクトでもタスクランナーとしてnpmを使う

$
0
0

Goのタスクランナーとして npmを使ってみたら案外よかった。Go に限った話ではないけど、Go が特に開発ツールチェーン周りの管理がしにくいので噛み合いやすいのではないかと思う。

npmNode.js用のパッケージマネージャだが、npm-scriptsという簡易なタスクランナー機能がついている。また、Node.js 用の便利な開発ツールをそのまま利用できて、開発ツールのインストールも一括で管理できる。

npm をタスクランナーとして使う利点

  • Node.js のインストールだけで利用できる
  • 簡易なタスクランナーが利用できる
  • Node.js 用の開発ツールが利用できる
    • husky + lint-staged, Prettier, etc
  • 開発ツールのインストールが 1 コマンド (npm install) で完了する

導入手順

npm のインストール

Node.jsをインストールすれば npm も標準で付属する。

package.json の作成

npm で管理したいプロジェクトに package.jsonを作成する。

package.json
{"name":"go-project","private":true,"scripts":{"test":"go test -v ./...",// ...}}

"scripts"フィールドに "スクリプト名": "コマンド..."の形でタスクを書くと、npm run スクリプト名の形で実行できる。

Node.js 用の開発ツールの追加

Node.js 用の開発ツールといえど、JavaScript 以外でも使える便利なツールが多数存在する。npm install -D パッケージ名でパッケージの追加ができる。下記の点に注意する。

  • node_modules.gitignoreに追加
  • package-lock.jsonも必要なファイルなので git 上にコミット

package.jsonに追加したパッケージは、別環境でも npm installで一括インストールできるようになる。

husky + lint-staged

husky はコミットフックを管理できるようにするツール、lint-staged は git でステージングされているファイルに linter を走らせるためのツール。

$npm install-D husky lint-staged

設定は package.json に書く (別ファイルにもできる)。

package.json
{// ..."husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.go":"go fmt"}}

上記のようにするとコミット前の go のソースコードに自動で go fmtできる。

Prettier

Prettierといえば JavaScript 用のフォーマッタだが、それ以外のファイルタイプのフォーマットにも対応している。

  • Markdown
  • JSON
  • YAML
$npm install-D prettier

上記の husky、lint-staged と組み合わせればコミットフックで上記ファイルのフォーマットもできる。

package.json
{// ..."lint-staged":{"*.go":"go fmt","*.{md,yml,json}":"prettier --write"}

その他

他にも導入すると便利かもしれないツール。マルチプラットフォームで動作するようにさせるものも多い。参考: npm-scripts で使える便利モジュールたち - Qiita

  • commitlint
    • コミットメッセージの linter
  • cross-env
    • マルチプラットフォームで環境変数を設定しつつ npm-scripts を使えるようにする
  • rimraf
    • マルチプラットフォームの rm -rf

Viewing all articles
Browse latest Browse all 9309

Trending Articles