importやrequireで階層が深い場合の相対パスがめんどくさいという問題について、NODE_PATHを設定する方法やnode_modulesに配置するなどいくつか対処の仕方があるようです。しかしどれも決め手に欠ける感じだったのでgulp-absolute-pathというプラグインを作りました。
Node.jsの標準モジュールではなく、node_modulesにも存在せず、相対パスでもない場合に指定したルートディレクトリを基準とした絶対パスとして扱います。
https://www.npmjs.com/package/gulp-absolute-path
Usageでは
.pipe(abspath({rootDir:'./app'}))
.pipe(ts(tsOptions))
のようにTypeScriptの前で使っていますがjsでも大丈夫です。ただビルドでは問題なくともエディタ上でmodule not foundのエラー報告がされてしまうと思われ(lintを入れている場合など)ます。
TypeScriptの場合はtsconfig.jsonでbaseUrlを設定しておくことで対応可能なので、エディタ(Atom等)に対してはtsconfig.jsonで、ビルド時にはgulp-absolute-pathでと整合性を保ちつつ使い分けるという方法が良いでしょう。jsの場合は・・・わかりません。