Gulpfile. js не перезаписывает индекс. html правильно - PullRequest
0 голосов
/ 28 февраля 2020

Мой gulpfile. * У 1020 * есть пара проблем.

Он пытается выполнить задачу, ну, в моем случае, две. Вот разделы, на которые я ссылаюсь:

// HTML
function html(done) {
  var cbString = new Date().getTime();
  src(htmlSrc + "index.html")
    .pipe(
      embedSvg({
        root: "./source/images/",
        selectors: ".inline-svg"
      })
    )
    .pipe(
      htmlmin({
        collapseWhitespace: true,
        minifyCSS: true,
        minifyJS: {
          compress: {
            drop_console: true
          }
        },
        processConditionalComments: true,
        removeComments: true,
        removeEmptyAttributes: true,
        removeScriptTypeAttributes: true,
        removeStyleLinkTypeAttributes: true,
        processScripts: ["application/ld+json"]
      })
    )
    .pipe(dest(htmlDest));
  done();
}





function oh(done) {
  var cbString = new Date().getTime();
  src([htmlSrc + "index.html"])
    .pipe(include()).on('error', console.log)
    .pipe(
      rename({
        basename: "jeff"
      })
    )
    .pipe(replace(/cb=\d+/, 'cb=' + cbString))
    .pipe(dest(htmlDest));
  done();
}

Первая задача встраивает изображения SVG и минимизирует индекс. html.

Вторая задача включает в себя верхний и нижний колонтитулы и затем просматривает часть кода, то есть 'cb = 123' и меняет '123' на основе даты и времени.

В данный момент у меня есть вторая задача, создающая новый файл с именем jeff, и он выглядит так: работать правильно. Он меняет

Если я разрешу перезаписать файл индекса. html, он не будет работать правильно, «cb = 1223» изменится, когда файл индекса. html будет отредактирован, но когда основной. Файл css отредактирован, он не будет обновлять номер в индексе. Файл html, поэтому я вместо этого заставил его создать файл с именем 'jeff' для проверки, который, кажется, работает нормально.

Так что это проблема при перезаписи индекса. html

Есть идеи?

Вот полный gulpfile. js:

// --------------------------------------------
// Gulp Loader
// --------------------------------------------

const {
  src,
  dest,
  task,
  watch,
  series,
  parallel
} = require("gulp");

// --------------------------------------------
// Dependencies
// --------------------------------------------

const homedir = require("os").homedir();
var path = require("path");
var pathDir = require("path").resolve(__dirname, "../../");
var parentDir = path
  .dirname(pathDir)
  .split(path.sep)
  .pop();

var newParent = parentDir.split(" ").join("_");

var parentdir = path.basename(path.dirname(pathDir));
parentdir = parentDir.replace(/[^\w]/g, "");
parentdir = parentDir.replace(/[^\w]/g, "").toLowerCase();

// HTML plugins
let htmlmin = require("gulp-htmlmin");

// CSS / SASS plugins
let sass = require("gulp-sass");
let autoprefixer = require("autoprefixer");
let minifycss = require("gulp-clean-css");
let postcss = require("gulp-postcss");
let cssnano = require("cssnano");

// JSS / plugins
let uglify = require("gulp-uglify");

// Utility plugins
let concat = require("gulp-concat");
let del = require("del");
let plumber = require("gulp-plumber");
let sourcemaps = require("gulp-sourcemaps");
let rename = require("gulp-rename");
let include = require("gulp-include");
var replace = require('gulp-replace');

// Browser plugins
let browserSync = require("browser-sync").create();

// Images plugins
let imagemin = require("gulp-imagemin");
let embedSvg = require("gulp-embed-svg");

// --------------------------------------------
// Project Variables
// --------------------------------------------

let htmlSrc = "source/";
let htmlDest = homedir + "/sites/blog/";

let incSrc = "source/includes/";

let styleSrc = "source/styles/";
let styleDest = homedir + "/sites/blog/styles/";

let vendorSrc = "source/scripts/vendors/";
let scriptSrc = "source/scripts/";
let scriptDest = homedir + "/sites/blog/scripts/";

let imageSrc = "source/images/";
let imageDest = homedir + "/sites/blog/images/";

let fontSrc = "source/fonts/";
let fontDest = homedir + "/sites/blog/fonts/";

// --------------------------------------------
// Tasks
// --------------------------------------------

// CSS
function css(done) {
  src([
    styleSrc + 'main.scss',
  ])
    .pipe(sass({
      outputStyle: 'compressed'
    }))
    .pipe(plumber())
    .pipe(dest(styleDest));
  done();
};

// JS
function js(done) {
  src([scriptSrc + "*.js", vendorSrc + "*.js"])
    .pipe(
      rename({
        basename: "main",
        suffix: ".min"
      })
    )
    .pipe(plumber())
    .pipe(uglify())
    .pipe(dest(scriptDest));
  done();
}

// HTML
function html(done) {
  var cbString = new Date().getTime();
  src(htmlSrc + "index.html")
    .pipe(
      embedSvg({
        root: "./source/images/",
        selectors: ".inline-svg"
      })
    )
    .pipe(
      htmlmin({
        collapseWhitespace: true,
        minifyCSS: true,
        minifyJS: {
          compress: {
            drop_console: true
          }
        },
        processConditionalComments: true,
        removeComments: true,
        removeEmptyAttributes: true,
        removeScriptTypeAttributes: true,
        removeStyleLinkTypeAttributes: true,
        processScripts: ["application/ld+json"]
      })
    )
    .pipe(dest(htmlDest));
  done();
}

function oh(done) {
  var cbString = new Date().getTime();
  src([htmlSrc + "index.html"])
    .pipe(include()).on('error', console.log)
    .pipe(
      rename({
        basename: "jeff"
      })
    )
    .pipe(replace(/cb=\d+/, 'cb=' + cbString))
    .pipe(dest(htmlDest));
  done();
}
// IMAGES
function img(done) {
  src(imageSrc + "*")
    .pipe(imagemin())
    .pipe(dest(imageDest));
  done();
}

// FONTS
function fonts(done) {
  src(fontSrc + "*").pipe(dest(fontDest));
  done();
}

// --------------------------------------------
// Watch for changes
// --------------------------------------------

function watcher() {
  // Serve files from the root of this project
  browserSync.init({
    server: {
      baseDir: homedir + "/sites/blog/",
    },
    notify: false
  });

  watch(styleSrc, series(oh)).on("change", browserSync.reload);
  watch(htmlSrc, series(html)).on("change", browserSync.reload);
  watch(styleSrc, series(css)).on("change", browserSync.reload);
  watch(scriptSrc, series(js)).on("change", browserSync.reload);
  watch(imageSrc, series(img)).on("change", browserSync.reload);
  watch(imageSrc, series(fonts)).on("change", browserSync.reload);
}

// use default task to launch Browsersync and watch JS files
var build = series(html, oh, css, js, img, fonts, watcher);
task("default", build);

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