Использование gulp + browserify + babalify для кода ES6, на который ссылается внешний javascript. - PullRequest
0 голосов
/ 25 мая 2018

Я работал над побочным проектом для нашего основного проекта, используя классы 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'));
}

Требование, сгенерированное этим, уникально для моего компьютера (полный путь), поэтому мне явно нужно использовать псевдоним.Тем не менее, похоже, что псевдоним не работает хорошо с выше, или я не знаю правильный формат.Изменение строки requre на

require: 'cli/main.js:CSMain" 

не сработало, так как она трактовала всю строку в кавычках как имя файла / модуля.

Есть ли способ переписать это, чтобы он работал и имелпсевдоним, на который я могу сослаться в основном угловом коде?Обратите внимание, что строка для ссылки на функцию, которую я дал выше:

gulp.task('cli', cliCompile);

1 Ответ

0 голосов
/ 30 мая 2018

Псевдоним действительно обходит это.Однако оказывается, что вы не можете указывать опции 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'));
}

Можно также указать requireв списке:

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'));
...