npm install
npm start
and save a.js.
Files are bundled twice.
This is because a.js is watched twice as a relative path and an absoulete path. The former comes from 'file' event of browserify that comes from module-deps' 'file' event. The latter comes from 'dep' event of browserify. If we use absolute paths for browserify, this problem doesn't happen. But why does watchify check 'file' and 'dep'?
Also, it's dangerous to watch a relative path because it doesn't consider options.baseDir.