gpt4 book ai didi

browserify - 如何在 browserify 中使用排除?

转载 作者:行者123 更新时间:2023-12-03 23:28:59 26 4
gpt4 key购买 nike

在 browserify 手册中,exclude part ,它给出了一个使用排除的例子:

$ npm install jquery
$ browserify -r jquery --standalone jquery > jquery-bundle.js

然后我们只想在 main.js 中 require('jquery'):

var $ = require('jquery');
$(window).click(function () { document.body.bgColor = 'red' });

遵从 jquery dist bundle 这样我们就可以写:

<script src="jquery-bundle.js"></script>
<script src="bundle.js"></script>

如果没有在 bundle.js 中显示 jquery 定义,那么在编译 main.js 时,您可以 --exclude jquery:

browserify main.js --exclude jquery > bundle.js

但是当我尝试运行这个示例时,我得到了一个错误“ Uncaught Error :找不到模块‘jquery’”

我知道如果我使用独立的,我可以只使用 'jquery' 作为全局变量,但它不是模块化的,所以我仍然想使用“require('jquery' )”,那么,我该怎么做才能实现呢?

最佳答案

我终于使用此处找到的信息实现了此功能:

https://truongtx.me/2014/03/20/browserify-bring-nodejs-modules-to-browser/

我想知道你找到的文档现在是不是过时了......

上述链接中的工作解决方案使用“-x”选项(“外部”)而不是“-u”选项(“排除”)/p>

链接的文章还演示了如何使用 gulp 进行设置。

我从上面链接的网站粘贴相关内容:

$ browserify -r foo.js > foo-out.js
$ browserify -r d3-browserify > d3-browserify-out.js

对于 main.js

$ browserify -x ./foo.js -x d3-browserify main.js > main-bundle.js

在浏览器中,您需要包含所有这 3 个文件

<script src="foo-out.js"></script>
<script src="d3-browserify-out.js"></script>
<script src="main-bundle.js"></script>

更新: 我发布的链接似乎不起作用,所以我包含了我当前的 gulpfile.js。我是 gulp 和 javascript 的新手,所以可能有更好的方法来做这些事情。但是当前的设置基本上可以工作:

var browserify = require('browserify');

var gulp = require('gulp');

var watchify = require('watchify');

var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');

var jshint = require('gulp-jshint');
var uglify = require('gulp-uglify');
var sourcemaps = require('gulp-sourcemaps');
var gutil = require('gulp-util');

var del = require('del');

const PATH_OPTS = {
src_dir: './client/js/src/',
main_file_path: './client/js/src/main.js',
output_file_name: 'disco.js',
output_dir: './public/js/',
common_lib_file_name: 'common.js'
};

const LIBS = ['paper', 'jquery', 'tocktimer'];

gulp.task("clientlib", function() {
var bundler = browserify({
debug: false
});

LIBS.forEach(function(lib) {
bundler.require(lib);
});

bundler.bundle()
.pipe(source(PATH_OPTS.common_lib_file_name))
// uglify seems to need a buffered stream...
.pipe(buffer())
.pipe(uglify())
.on('error', gutil.log)
.pipe(gulp.dest(PATH_OPTS.output_dir));
});

gulp.task('client', function () {
var bundler = browserify({
debug: true,
cache: {},
packageCache: {},
fullPaths: true
});

bundler = watchify(bundler);

bundler.on('update', function(){
bundle(bundler);
});

bundler.on('log', function(msg) {
gutil.log(msg);
});

bundler.add(PATH_OPTS.main_file_path);

LIBS.forEach(function(lib) {
bundler.external(require.resolve(lib, { expose: lib }));
});

return bundle(bundler);
});

function bundle(bundler) {
return bundler.bundle()
.pipe(source(PATH_OPTS.output_file_name))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
// Add transformation tasks to the pipeline here.
.pipe(uglify())
.on('error', gutil.log)
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(PATH_OPTS.output_dir));
}

gulp.task('lint', function() {
return gulp.src(PATH_OPTS.src_dir + '*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'));
});

gulp.task('clean', function () {
return del([
PATH_OPTS.output_dir + '/*.*'
]);
});

gulp.task('full', ['lint', 'clean', 'clientlib', 'client']);

gulp.task('default', ['lint', 'client']);

关于browserify - 如何在 browserify 中使用排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com