久しぶりにNode.jsに触ってプロジェクトを作ったので共有。
フォルダ構成
- bin
- hoge.js
- src
- test
- mocha.opts
- .eslintrc
- index.js
- package.json
mocha.opts
--ui bdd
--reporter spec
--timeout 5000
--require intelli-espower-loader
--preserve-symlinks power-assert
--preserve-symlinks power-assert
が無いとESLintに怒られたので追加した。
node_modules直下に展開されていないと、requireエラーという意味らしい。でも、power-assertのデフォルトでは、symlinkで使えるようになっているので、それを辞める設定かな。
.eslintrc
---
extends: airbnb-base
rules:
comma-dangle: 0
ESLintの設定は、airbnb-baseを使用して、その中のケツカンマ設定のみ除外した(自動でケツカンマをつけると関数呼び出しまで付けられて、動かなくなるコードがあったため)(コメントも書けるのでyaml形式で書いた)
package.json
{
"name": "hoge",
"version": "1.0.0",
"description": "",
"main": "index.js",
"bin": {
"hoge": "bin/hoge.js"
},
"scripts": {
"test": "mocha test/*.js",
"test-w": "mocha -w test/*.js",
"lint": "eslint **/*.js",
"format": "eslint --fix **/*.js"
},
"author": "hoge@example.com",
"license": "MIT",
"dependencies": {
},
"devDependencies": {
"eslint": "^3.19.0",
"eslint-config-airbnb": "^14.1.0",
"eslint-plugin-import": "^2.2.0",
"eslint-plugin-jsx-a11y": "^4.0.0",
"eslint-plugin-react": "^6.10.3",
"espower-loader": "*",
"intelli-espower-loader": "*",
"mocha": "*",
"power-assert": "*"
},
"private": true
}
- binの指定はタイトルとずれるけど、globalインストールしたらコマンドで打てるようになる。
- scriptsタグ内では、node_modules/.bin/mochaとか、フルパスで書かなくて良いらしい。知らなかった。
- scriptsの
eslint --fix
で、フォーマットまでかけてくれるらしい。昔は別途esformatterとか使ってました。 - devDependenciesのESLintの指定は、コマンドが用意されていたためそちらで入れたらこうなった。
さいごに
おすすめは、ターミナルを2つ、エディタを1つ立ち上げて、
-
テスト駆動開発でwatchdog(watchmedo)を使うで
npm run lint
を流す -
npm run test-w
も流す - エディタでコードを修正
していくと、テスト駆動開発が捗ると思います!!