Node.js Gulp без выходного файла создан - PullRequest
0 голосов
/ 04 июня 2019

У меня есть сценарий Gulp для объединения и минимизации JavaScript.Кажется, он работает, но не выводит объединенный файл.

Сценарий (полный - включая дополнительные биты отладки):

// include plug-ins
var fs = require('fs');
var gulp = require('gulp');
var count = require('gulp-count');
var debug = require('gulp-debug');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var del = require('del');


var config = {
    src: 'dist/libraries/',
    dest: 'dist/js/',
    outputfile: 'libraries.min.js'
}

gulp.task('read', (done) =>  {
    fs.readdir(config.src, (err, items) => {
        console.log(items);
    });
    done();
});

//delete the output file(s)
gulp.task('clean', gulp.series('read'), (done) => {
    //del is an async function and not a gulp plugin (just standard nodejs)
    //It returns a promise, so make sure you return that from this task function
    //  so gulp knows when the delete is complete
    return del([config.dest + config.outputfile]);
});

// Combine and minify all files from the app folder
// This tasks depends on the clean task which means gulp will ensure that the 
// Clean task is completed before running the scripts task.
gulp.task('scripts', gulp.series('clean'), (done) => {

    //Include all js files but exclude any min.js files
    var files = [config.src + '*.js', '!' + config.src + '*.min.js'];

    return gulp.src(files)
       .pipe(debug())
       .pipe(count('## files selected'))
       .pipe(uglify())
       .pipe(concat(config.outputfile))
       .pipe(gulp.dest(config.dest));
});

//Set a default tasks
gulp.task('default', gulp.series('scripts'), (done) => { 

});

, который производит вывод - включая список файлов дляпроверка есть файлы src:

[07:46:25] Using gulpfile <path>\gulpfile.js
[07:46:25] Starting 'default'...
[07:46:25] Starting 'scripts'...
[07:46:25] Starting 'clean'...
[07:46:25] Starting 'read'...
[07:46:25] Finished 'read' after 996 μs
[07:46:25] Finished 'clean' after 2.73 ms
[07:46:25] Finished 'scripts' after 4.26 ms
[07:46:25] Finished 'default' after 6.9 ms
[ 'bootstrap-datetimepicker.js',
  'bootstrap.min.js',
  'chart.min.js',
  'cycle.js',
  'farbtastic.js',
  'jquery-3.2.1.min.js',
  'jquery-sortable-min.js',
  'moment.min.js',
  'ol.min.js',
  'pablo.min.js',
  'popper.min.js',
  'proj4.js',
  'promisedIndexDB.js',
  'qunit-2.6.1.js',
  'toastr.js' ]

Если я создаю пустой файл, на dist/js/libraries.min.js он не удаляется как часть задач gulp, однако, если я перевожу вызов del () за пределыЗадачи gulp удаляются, поэтому я могу предположить, что это не так просто, как проблема с разрешениями или проблемы с путями.

Есть идеи, что я сделал неправильно?

PS: егов окне windows, работает в окне администратора cmd.

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Вы использовали неверную подпись для задачи. Правильный:

задача ([имя задачи], функция задачи)

см. подпись задачи

Но ваши задачи выглядят так:

gulp.task('scripts', gulp.series('clean'), (done) => {   // 3 parameters

Просто изменив это на:

gulp.task('scripts', gulp.series('clean', (done) => {
  ...
}));

заставляет это работать - я проверял это. Теперь у этой задачи есть только два параметра: имя задачи и функция. У вас было имя задачи плюс две функции.

Вам также необходимо изменить задачи default и clean на эту правильную подпись. Также вам следует позвонить done() в конце задания, как вы это сделали с cb().

Ваш новый код использует функции задач, которые лучше, чем именованные задачи по ряду причин - но теперь вы знаете, что не так с вашим исходным кодом. Основная часть вашей задачи scripts никогда не выполнялась.

0 голосов
/ 04 июня 2019

Я никогда не понимал, что не так, но пошел прямо к документу и начал заново (предыдущая версия была из примера) ..

Работает с приведенным ниже (гораздо более простым) скриптом.

// // include plug-ins
var gulp = require('gulp');
var count = require('gulp-count');
var debug = require('gulp-debug');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var del = require('del');

var config = {
    src: 'jspa-scada/dist/libraries/',
    dest: 'jspa-scada/dist/js/',
    outputfile: 'libraries.min.js'
}

function defaultTask(cb) {

    del([config.dest + config.outputfile]);


    // Include all js files but exclude any min.js files
    var globs = [
        config.src + '*.js',
        '!' + config.src + '*.min.js'
    ];

    return gulp.src(globs)
       .pipe(debug())
       .pipe(count('## files selected'))
       .pipe(uglify())
       .pipe(concat(config.outputfile))
       .pipe(gulp.dest(config.dest));

    cb();
}

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