【发布时间】:2016-01-02 05:10:43
【问题描述】:
我不认为这个问题是重复的,因为 jquery 不再需要填充。我使用 npm 下载了 jquery 作为我正在使用的所有其他插件。我可能弄错了,但我认为这与另一个问题的情况不同。
Browserify gulp 任务(称为模块):
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var gutil = require('gulp-util');
module.exports = function(gulp, plugins, config) {
return function() {
var b = browserify({
entries: config.srcAssets + '/js/app.js',
debug: true
});
return b.bundle()
.pipe(source('bundle.js'))
.pipe(buffer())
.pipe(plugins.sourcemaps.init({
loadMaps: true
}))
.on('error', gutil.log)
.pipe(plugins.sourcemaps.write('./'))
.pipe(gulp.dest(config.dest + '/js'));
};
};
我最大限度地简化了我的文件来解释我的问题。
app.js:
var form = require('./form');
form.js:
var $ = require('../../../config/node_modules/jquery');
var validator = require('../../../config/node_modules/jquery-validation');
$("#form").validate();
$(function() {
$('.printArea').height($('#form').height());
})
它不起作用,因为在 bundle.js 文件中 jquery 验证插件将始终位于 jquery 之上。如果我不需要验证插件并删除依赖它的 js(所以只留下我自己的 jquery 操作),它可以工作。
【问题讨论】:
-
为什么插件会在 jQuery 之上?
-
我不知道,但我可以说是这样。 Browserify 把它放在 jquery 上面,所以包被破坏了!
-
我编辑了我的问题。我不认为这是重复的,因为我用 npm 安装了 jquery,而不是其他问题的情况。 Browserify-shim 不是这里的解决方案。 (此外我还在使用 gulp,我不认为 gulp 是这里的罪魁祸首,但它仍然不同)
-
我认为
browserify-shim是这里的答案,至少根据我使用 RequireJS 的经验,您使用 shims 来确保加载依赖项的依赖项。问题特别在于依赖项的顺序,而垫片有助于管理该顺序。
标签: javascript jquery node.js gulp browserify