使用gulp + browserify + babalify从外部javascript引用的ES6代码。

时间:2018-05-25 20:20:43

标签: javascript gulp browserify

我一直在使用es6类,导入和导出为我们的主项目工作。主代码使用Angular 1(即AngularJS)

我已经在这里和其他地方遵循了使用browsify和babelify的建议并且几乎让它工作但我坚持我希望是最后一步。我无法从主代码中引用我的库。

我们使用gulp所以我需要将它放入该框架中。我想出了以下内容来创建库:

function cliCompile() {
    console.log('Compiling client-server...');
    return browserify({
        entries: 'cli/main.js',
        debug: true,
        require: './cli/main.js',
        transform: [babelify]})
        .bundle()
        .pipe(source('cli.js'))
        .pipe(gulp.dest('./app/compiled'));
}

由此产生的需求对我的计算机来说是唯一的(完整路径)所以我显然需要使用别名。但是,看起来别名不能与上述相符,或者我不知道正确的格式。将请求行更改为

require: 'cli/main.js:CSMain" 

无效,因为它将引用字符串的完整内容视为文件名/模块。

有没有办法重写这个,所以它会工作,并在主角度代码中有一个别名我可以参考?请注意,引用上面给出的函数的行是:

gulp.task('cli', cliCompile);

1 个答案:

答案 0 :(得分:0)

别名确实可以解决这个问题。但是,当您将require作为初始参数的一部分传入时,似乎无法指定require选项。

而是调用.require如下:

gulp.task('cli', cliCompile);
....
function cliCompile() {
    console.log('Compiling client-server...');

    var b = browserify({
        entries: 'cli/main.js',
        debug: true,
        transform: [babelify]});
    b.require('./cli/main.js', {expose: 'cli'});
    return b.bundle()
        .pipe(source('cli.js'))
        .pipe(gulp.dest('./app/compiled'));
}

也可以将需求放在列表中:

return browserify({
        entries: 'cli/main.js',
        debug: true,
        transform: [babelify]})
            .require('./cli/main.js', {expose: 'cli'})
            .bundle()
            .pipe(source('cli.js'))
            .pipe(gulp.dest('./app/compiled'));