Передать кастомный флаг npm для вызова галптаска

Привет! Есть такой код:

const gulp = require("gulp"),
  plugins = require("gulp-load-plugins")(),
  autoprefixer = require("autoprefixer"),
  browserSync = require("browser-sync").create(),
          del = require("del");

let isMap = process.argv.includes("--map"),
    isBrowserSync = process.argv.includes("--sync");

function clean() {
  return del("./build");
}

function html() {
  return gulp.src("./src/*.pug")
    .pipe(plugins.plumber())
    .pipe(plugins.pug())
    .pipe(plugins.htmlmin())
    .pipe(gulp.dest("./build"));
}

function css() {
  return gulp.src("./src/scss/style.scss", { sourcemaps: isMap })
    .pipe(plugins.plumber())
    .pipe(plugins.sass())
    .pipe(plugins.postcss([autoprefixer()]))
    .pipe(plugins.cleanCss({
      level: 2
    }))
    .pipe(plugins.rename({
      extname: ".min.css"
    }))
    .pipe(gulp.dest("./build/css", { sourcemaps: "." }))
    .pipe(browserSync.stream());
}

function js() {
  return gulp.src("./src/js/*.js", { sourcemaps: isMap })
  .pipe(plugins.plumber())
  .pipe(plugins.babel({
    presets: ['@babel/env']
  }))
  .pipe(plugins.uglify())
  .pipe(plugins.rename({
    extname: ".min.js"
  }))
  .pipe(gulp.dest("./build/js", { sourcemaps: "." }));
}

function server() {
  browserSync.init({
    server: {
      baseDir: "./build"
    }
  });

  gulp.watch("./src/*.pug", gulp.series(html, refresh));
  gulp.watch("./src/scss/**/*", css);
  gulp.watch("./src/js/*.js", gulp.series(js, refresh));
}

function refresh(done) {
  browserSync.reload();
  done();
}

gulp.task("clean", clean);
gulp.task("html", html);
gulp.task("css", css);
gulp.task("js", js);
gulp.task("server", server);

let build = gulp.series(clean, css, js, html);

gulp.task("build", gulp.series(build, server));

Сейчас сборка запускается gulp build. Нужно сделать так, чтобы таск server срабатывал только если запуск будет gulp build --sync. Не знаю, как и куда этот флаг приткнуть. Буду признателен за подсказку.

Я правильно понимаю что конечная цель - запускать некоторую таску (допустим server) при запуске других тасок. Но только если флаг передан?

Теоретически решение должно выглядеть так, но проверяй, я неопытный в gulp-e

gulp.task("build", isBrowserSync ? gulp.series(build, server) : build);

Идея - при наличии флага isBrowserSync не включать таску server в список тасок на выполнение

1 лайк

Привет. Можно установить пакет npm argv. И соответсвенно из argv читать параметр переданный из терминала. И в коде обрабатывать условия связанные с переданными параметрами из терминала. Я так в своём проекте делал.

1 лайк

Да, именно так )

Передать кастомный флаг npm для вызова галптаска подход из этого комментария сработал?

1 лайк