我来自AMD,似乎已经做错了事。
我做了这样的设置:
client/js/index.js (entry point)
client/js/test.js
我希望将其构建为:
build/app.js
index.js
在test.js
中要求如下:var test = require('./test');
我的
gulp
watchify
任务如下所示:var gulp = require('gulp');
var gutil = require('gulp-util');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var watchify = require('watchify');
// https://github.com/gulpjs/gulp/blob/master/docs/recipes/fast-browserify-builds-with-watchify.md
gulp.task('watch', function () {
var bundler = watchify(browserify('./client/js/index.js', watchify.args));
bundler.on('update', rebundle);
function rebundle () {
return bundler.bundle()
// Log errors if they happen.
.on('error', function(e) {
gutil.log('Browserify Error', e.message);
})
.pipe(source('app.js'))
.pipe(gulp.dest('./build'));
}
return rebundle();
});
但是,编译后的代码看起来是错误的,对于
test.js
,我看到绝对本地路径对于使用该代码的人肯定是损坏的或多余的吗?附言我没有args(只是
gulp watch
)运行任务(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"./client/js/index.js":[function(require,module,exports){
var test = require('./test');
var ab = function(a, b2) {
return a + b2;
};
module.exports = ab;
},{"./test":"/Users/dtobias/Sites/browserify-test/client/js/test.js"}],"/Users/dtobias/Sites/browserify-test/client/js/test.js":[function(require,module,exports){
var helloworld = function () {
console.log('hello world');
};
module.exports = helloworld;
},{}]},{},["./client/js/index.js"]);
最佳答案
watchify用于监视文件的更改并自动更新它们,不用于部署,您看到的路径是在此行上使用watchify.args
的结果watchify(browserify('./client/js/index.js', watchify.args));
在传递给browserify的参数中,其状态为,这是watchify如何在每次文件更改时加快构建过程的一部分。我建议做的是专门执行watchify任务,以监视和浏览器查看构建过程。
这可以通过在监视任务中设置一些开关并将其设置为true(然后修改代码)来轻松实现。
像这样:
var gulp = require('gulp');
var gutil = require('gulp-util');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var watchify = require('watchify');
// https://github.com/gulpjs/gulp/blob/master/docs/recipes/fast-browserify-builds-with-watchify.md
gulp.task('build', function(){
browserifyfun(false);
});
gulp.task('watch', function () {
browserifyfun(true);
});
function browserifyfun(watch){
var b;
if(watch){
b = watchify(browserify('./client/js/index.js', watchify.args));
b.on('update', rebundle(b));
}else{
b = browserify('./client/js/index.js');
}
function rebundle (bundler) {
return bundler.bundle()
// Log errors if they happen.
.on('error', function(e) {
gutil.log('Browserify Error', e.message);
})
.pipe(source('app.js'))
.pipe(gulp.dest('./build'));
}
return rebundle(b);
}
Modified code from here
关于javascript - Browserify编译为完整的系统路径(使用watchify和gulp),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25224670/