Простое объединение основного файла, для которого требуется другой файл JS - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть простой файл:

main.js:

'use strict';
const somefile = require('somefile')

// class MyClass ...
// some js

Я хочу использовать gulp для создания уменьшенного файлав него также включен код из somefile.js .Но по какой-то причине я не могу найти способ сделать это.Внутри моего уменьшенного файла у меня есть require ('somefile') , а не полный код.

gulpfile.js

const gulp = require('gulp');
const minify = require('gulp-minify');
const babel = require('gulp-babel');
const include = require("gulp-include");
const sourcemaps = require('gulp-sourcemaps');
const jsImport = require('gulp-js-import');
const resolveDependencies = require('gulp-resolve-dependencies');

gulp.task('default', () =>
    gulp.src('src/main.js')
        .pipe(sourcemaps.init())
        .pipe(resolveDependencies({
          pattern: /\* @requires [\s-]*(.*\.js)/g
        }))
        .pipe(jsImport({hideConsole: true}))
        .pipe(babel({
            presets: ['@babel/env']
        }))
        .pipe(minify({
            ext: {
                min: '.min.js'
            }
        }))
        .pipe(gulp.dest('dist'))
);

I 'я тоже пробовал с gulp-concat .

Я что-то упустил, но не уверен, что.

Есть идеи?

1 Ответ

0 голосов
/ 14 сентября 2018

В канале resolDependencies вы скопировали шаблон регулярного выражения по умолчанию, который gulp-resol-dependencies будет использовать для поиска любых операторов require в коде.Но ваш require выглядит совсем не так, как пример документации.Ваш:

const somefile = require('somefile')

Попробуйте этот шаблон: pattern: /\.*require\s*\('(.*)'\)/g

Это должно захватить файл в скобках (который затем автоматически передается функции распознавания пути).А затем объедините эти файлы.

const gulp = require('gulp');
const minify = require('gulp-minify');
const babel = require('gulp-babel');

// const include = require("gulp-include");  you don't need this

const sourcemaps = require('gulp-sourcemaps');

// const jsImport = require('gulp-js-import');  you don't need this

const resolveDependencies = require('gulp-resolve-dependencies');
const concat = require('gulp-concat');

gulp.task('default', () =>
    gulp.src('src/main.js')
        .pipe(sourcemaps.init())
        .pipe(resolveDependencies({
          pattern: /.*require\s*\('(.*)'\)/g
        }))

         // added the following:
        .pipe(concat('a filename here'))

        .pipe(babel({
            presets: ['@babel/env']
        }))
        .pipe(minify({
            ext: {
                min: '.min.js'
            }
        }))

         // added the following:
        .pipe(sourcemaps.write('some destination folder for the soucemaps'))

        .pipe(gulp.dest('dist'))
);

Я не смог проверить это, но это должно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...