表題のとおりだが、更に CircleCI のビルドを高速化するために yarn を使うぞ。
やりたいこと
- 最新の TypeScript を使う
- 1.8 とか使わない
- テストコードも TypeScript で書く
- empower する
- 明示的に require('power-assert') しない
- source map が生きてる状態でカバレッジを取る
- TypeScript の行ベースで結果が出る
やりたくないこと
- 中間ファイルの生成
やっていく
ガンガン入れる。
yarn add --dev typescript ts-node babel-register babel-preset-power-assert power-assert mocha nyc @types/mocha @types/node
この状態で、
mocha --compilers ts:ts-node/register,babel-register
とするとテストが、
nyc --extension .ts mocha --compilers ts:ts-node/register,babel-register
とするとカバレッジ付きのテストが走るようになっている。
なので、package.json
の scripts
にこれを書く。
"test": "nyc --extension .ts mocha --compilers ts:ts-node/register,babel-register"
いいですね?
ここからは CI の話
package.json
の scripts
にこれを足す。
"report-coverage": "nyc report --reporter=lcov > coverage.lcov"
これでカバレッジのレポートが吐けるようになった。
カバレッジレポートを codecov に送りつけるために circle.yml
にこれを書く。
test: post: - npm run report-coverage && bash <(curl -s https://codecov.io/bash)
あと、CircleCI でのビルドを高速化したいので以下の内容もベタっと書く。
machine: node: version: 7.0.0 post: - curl -o- -L https://yarnpkg.com/install.sh | bash dependencies: cache_directories: - "~/.yarn-cache" pre: - yarn --version override: - yarn install
この記事を参考にした。
結果
package.json
{ "scripts": { "test": "nyc --extension .ts mocha --compilers ts:ts-node/register,babel-register", "report-coverage": "nyc report --reporter=lcov > coverage.lcov" }, "devDependencies": { "@types/mocha": "^2.2.32", "@types/node": "^6.0.46", "babel-preset-power-assert": "^1.0.0", "babel-register": "^6.18.0", "mocha": "^3.1.2", "nyc": "^8.3.2", "power-assert": "^1.4.1", "ts-node": "^1.6.1", "typescript": "^2.0.6" } }
circle.yml
machine: node: version: 7.0.0 post: - curl -o- -L https://yarnpkg.com/install.sh | bash dependencies: cache_directories: - "~/.yarn-cache" pre: - yarn --version override: - yarn install test: post: - npm run report-coverage && bash <(curl -s https://codecov.io/bash)
最後に
あとはバッジとかつけてかっこよくキメましょう。
ちなみに、この TIPS が適用されているリポジトリがこれです。
ルーティングルールを DFA として保持するのでルール数が増えても速いはず、というサーバーサイド用の URL ルーターです。