Edited at

gulp や mocha を使う時は yarn が便利

More than 1 year has passed since last update.

以下の環境で確認


Terminal

$ node -v

v7.7.4
$ npm -v
4.4.4
$ yarn -v
yarn install v0.21.3
warning No license field
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 1.76s.

yarn を使うと package.jsonscripts フィールドに余計なことを書かなくてよくなります。

例えば以下のようなファイル構成だった場合。


Terminal

$ tree .

.
├── gulpfile.js
├── package.json
├── src
│   └── calc.js
└── test
    └── calc-test.js


src/calc.js

function add(a, b) {

return a + b;
}

function multiply(a, b) {
return a * b;
}

module.exports = {add, multiply};



test/calc-test.js

var assert = require("assert");

var calc = require("../src-js/calc.js");

describe("calc", function() {
it("add", function() {
assert.equal(4, calc.add(1, 3));
});

it("multiply", function() {
assert.equal(6, calc.multiply(2, 3));
});
});



gulpfile.js

var gulp = require("gulp");

var mocha = require("gulp-mocha");

gulp.task("mocha", function() {
return gulp
.src(["test/*.js"], { read: false })
.pipe(mocha({ reporter: "spec" }));
});

gulp.task("watch", function() {
return gulp
.watch(["src/**", "test/**"], ["mocha"]);
});



package.json

{

"dependencies": {
"gulp": "^3.9.1",
"gulp-mocha": "3.0.1",
"mocha": "^3.2.0"
}
}

package.jsonscripts フィールドがないので、以下の実行はエラーになります。


Terminal

$ npm run mocha

npm ERR! missing script: mocha
$ npm run gulp mocha
npm ERR! missing script: gulp

でも yarn だと scripts フィールドがなくても問題なく実行されます。


2017/4/10 追記。run が無くても動くことに気づきました。



Terminal

$ yarn run mocha

// or
$ yarn mocha
yarn run v0.21.3
$ "/path/to/project/node_modules/.bin/mocha"
calc
✓ add
✓ multiply
2 passing (12ms)
✨ Done in 0.66s.

$ yarn run gulp mocha
// or
$ yarn gulp mocha
yarn run v0.21.3
$ "/path/to/project/node_modules/.bin/gulp" mocha
[1X:33:00] Using gulpfile /path/to/project/gulpfile.js
[1X:33:00] Starting 'mocha'...
[1X:33:01] Finished 'mocha' after 686 ms
✨ Done in 8.62s.


npm run でエラーなく実行するには、以下のように scripts フィールドを追加する必要があります。


package.json

{

〜略〜
},
"scripts": {
"mocha": "mocha",
"gulp": "gulp"
}
}

そんなわけで自分はもっぱら yarn を使ってます。

install(yarn では add)も、npm より速い気がしますし。

でも Github とかで公開するコードでは scripts フィールドを書いておくと喜ばれるかも。