Неожиданная функция токена + минимизация файлов в Gulpfile - PullRequest
0 голосов
/ 25 сентября 2019

У меня следующая структура папок:

theme
   assets
      build
      src
         sass
            globals
               _base.scss
               _client-styles.scss
            _variables.scss
            style.scss
    template-parts
       parts
           hero
              hero.php
              hero.scss
    style.css

style.scss выглядит так:

@import "variables.scss";
@import "globals/**/**.scss";
@import "/../../../template-parts/**/**/*.scss";

Я пытаюсь достичь с помощью gulp, чтобы скомпилировать все из style.scss в минимизированный CSS-файл.Я довольно новичок в gulp и должен скомпилировать следующий gulpfile на основе фрагментов, которые я нашел в Интернете.Тем не менее, я получаю неожиданную ошибку функции токена при запуске gulp?

gulpfile.js

const assets = 'assets/';
const wpComponents = 'template-parts/';

const gulp          = require('gulp'),
      autoprefixer  = require('gulp-autoprefixer'),
      sass          = require('gulp-sass'),
      concat        = require('gulp-concat'),
      uglify        = require('gulp-uglify'),
      sassGlob      = require('gulp-sass-glob');
const plumber       = require('gulp-plumber'),
      eslint        = require('gulp-eslint');
const scss          = assets + 'src/sass/',
      js            = assets + 'src/js/',
      jsDist        = assets + 'build/js/';
const wpThemeFiles    = wpComponents + '**/**/*.php',
      wpStyleFiles    = scss + '**/*.scss',
      wpJsFiles       = js + '**/*.js',

function css() {
  return gulp.src(['node_modules/bootstrap/scss/bootstrap.scss',scss + 'style.scss'], { sourcemaps: true })
    .pipe(sassGlob())
    .pipe(plumber())
    .pipe(sass({
      outputStyle: 'expanded'
    }).on('error', sass.logError))
    .pipe(autoprefixer('last 2 versions'))
    .pipe(concat('theme.min.css'))
    .pipe(gulp.dest(assets + 'build/css/', { sourcemaps: '.' }));
}

function editorCSS() {
  return gulp.src(scss + 'style-editor.scss', { allowEmpty: true })
    .pipe(sass({
      outputStyle: 'compressed'
    }).on('error', sass.logError))
    .pipe(gulp.dest(assets + 'build/css/'));
}

function javascript() {
  return gulp.src([
     'node_modules/jquery/dist/jquery.min.js',
     'node_modules/bootstrap/dist/js/bootstrap.min.js',
     wpJsFiles,
     vcJsFiles
    ])
    .pipe(plumber())
    .pipe(concat('theme.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest(jsDist));
}

// Lint scripts
function scriptsLint() {
  return gulp
    .src([wpJsFiles, vcJsFiles, "./gulpfile.js"])
    .pipe(eslint())
    .pipe(eslint.format())
    .pipe(eslint.failAfterError());
}

function watch() {
    gulp.watch([wpStyleFiles, vcStyleFiles], css);
    gulp.watch([wpStyleFiles, vcStyleFiles], editorCSS);
    //gulp.watch(imgSRC, imgmin);
    gulp.watch([wpJsFiles, vcJsFiles], gulp.series( javascript));
    gulp.watch([wpThemeFiles, vcThemeFiles, jsDist + 'scripts.min.js', assets + 'build/css/theme.min.css']).on('change', reload);
}

exports.css = css;
exports.images = imgmin;
exports.editorCSS = editorCSS;
exports.javascript = javascript;
exports.watch = watch;

const build = gulp.series(watch);
gulp.task('default', build);

Достигнет ли мой текущий файл gulpfile того, к чему я стремлюсь?

Редактировать

Мне удалось устранить непредвиденную ошибку функции токена, последний const просто потребовал точку с запятой: wpJsFiles = js + '**/*.js';.

IЯ также изменил структуру папок, в основном это папка build , которая теперь содержит папки css и js:

theme
   assets
      build
         css
            theme.min.css
          js
             theme.min.js
      src
         sass
            globals
               _base.scss
               _client-styles.scss
            _variables.scss
            style.scss
    template-parts
       parts
           hero
              hero.php
              hero.scss
    style.css

Но теперь, когда я запускаю gulp, я получаю сообщения об ошибках:

Starting 'default'...
Starting 'watch'...
'watch' errored after 9.44 ms
ReferenceError: vcStyleFiles is not defined 

Не знаю почему, потому что vcStyleFiles определено, а theme.min.css и theme.min.js существуют в папке build ?

Обновлен gulpfile.js:

const assets = 'assets/';
const wpComponents = 'template-parts/';

const gulp          = require('gulp'),
      autoprefixer  = require('gulp-autoprefixer'),
      sass          = require('gulp-sass'),
      concat        = require('gulp-concat'),
      uglify        = require('gulp-uglify'),
      sassGlob      = require('gulp-sass-glob');
const plumber       = require('gulp-plumber'),
      eslint        = require('gulp-eslint');
const scss          = assets + 'src/sass/',
      js            = assets + 'src/js/',
      jsDist        = assets + 'build/js/';
const wpThemeFiles    = wpComponents + '**/**/*.php',
      wpStyleFiles    = scss + '**/*.scss',
      wpJsFiles       = js + '**/*.js';

function css() {
  return gulp.src(['node_modules/bootstrap/scss/bootstrap.scss',scss + 'style.scss'], { sourcemaps: true })
    .pipe(sassGlob())
    .pipe(plumber())
    .pipe(sass({
      outputStyle: 'expanded'
    }).on('error', sass.logError))
    .pipe(autoprefixer('last 2 versions'))
    .pipe(concat('theme.min.css'))
    .pipe(gulp.dest(assets + 'build/css/', { sourcemaps: '.' }));
}

function editorCSS() {
  return gulp.src(scss + 'style-editor.scss', { allowEmpty: true })
    .pipe(sass({
      outputStyle: 'compressed'
    }).on('error', sass.logError))
    .pipe(gulp.dest(assets + 'build/css/'));
}

function javascript() {
  return gulp.src([
     'node_modules/jquery/dist/jquery.min.js',
     'node_modules/bootstrap/dist/js/bootstrap.min.js',
     wpJsFiles,
     vcJsFiles
    ])
    .pipe(plumber())
    .pipe(concat('theme.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest(jsDist));
}

// Lint scripts
function scriptsLint() {
  return gulp
    .src([wpJsFiles, vcJsFiles, "./gulpfile.js"])
    .pipe(eslint())
    .pipe(eslint.format())
    .pipe(eslint.failAfterError());
}

function watch() {
    gulp.watch([wpStyleFiles, vcStyleFiles], css);
    gulp.watch([wpStyleFiles, vcStyleFiles], editorCSS);
    gulp.watch([wpJsFiles, vcJsFiles], gulp.series( javascript));
    gulp.watch([wpThemeFiles, vcThemeFiles, jsDist + 'scripts.min.js', assets + 'build/css/theme.min.css']);
}

exports.css = css;
exports.editorCSS = editorCSS;
exports.javascript = javascript;
exports.watch = watch;

const build = gulp.series(watch);
gulp.task('default', build);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...