browserify を使用してすべての js ファイルをコンパイルしようとしています。
私が現在抱えている問題は次のとおりです: https://github.com/amsul/pickadate.js
: https://github.com/amsul/pickadate.js/blob/master/lib/picker.date.js
相対パスが必要です:
require('./picker.js')
他のファイルでこの問題に再び遭遇すると思います。
すべての js ファイルがコンパイルされて「dest」ディレクトリに移動されると、この相対パスは正しくなくなります。
これを上書きして正しいファイルを取得する方法はありますか?
現在使用している完全なgulpタスクは次のとおりです。
gulp.task('js', function () {
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var globby = require('globby');
var through = require('through2');
var uglify = require('gulp-uglify');
var sourcemaps = require('gulp-sourcemaps');
var reactify = require('reactify');
// gulp expects tasks to return a stream, so we create one here.
var bundledStream = through();
bundledStream
// turns the output bundle stream into a stream containing
// the normal attributes gulp plugins expect.
.pipe(source('app.js'))
// the rest of the gulp task, as you would normally write it.
// here we're copying from the Browserify + Uglify2 recipe.
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
// Add gulp plugins to the pipeline here.
.pipe(uglify())
.on('error', gutil.log)
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./dest/js/'))
.pipe(connect.reload());
// "globby" replaces the normal "gulp.src" as Browserify
// creates it's own readable stream.
globby([
'./app/js/*.js',
'./app/js/materialize/**/*.js',
'./app/components/**/*.js'
], function(err, entries) {
// ensure any errors from globby are handled
if (err) {
bundledStream.emit('error', err);
return;
}
// create the Browserify instance.
var b = browserify({
entries: entries,
debug: true,
transform: [reactify]
});
var browser = browser({
});
// pipe the Browserify stream into the stream we created earlier
// this starts our gulp pipeline.
b.bundle().pipe(bundledStream);
});
// finally, we return the stream, so gulp knows when this task is done.
return bundledStream;
});
picker.js は次の場所にあります: ./app/js/materialize/date_picker/picker.js
ブラウザ化して移動するまでは、これが正しい場所です。