Gulpfiles如何使命令而不是自动构建?

问题描述

下午好,gulp上有一个装配项目。每次更改后,都会组装完成的项目。

控制版本有点不舒服。

如何使项目仅基于命令gulp-build构建?目前,它是自动实现的,但是您需要通过命令来构建它。

gulpfiles

let project_folder = require("path").basename(__dirname);
let source_folder = "src";

let fs = require('fs');

let path = {
  build: {
    html: project_folder + "/",css: project_folder + "/css/",js: project_folder + "/js/",img: project_folder + "/images/",fonts: project_folder + "/fonts/",},src: {
    html: [source_folder + "/*.html","!" + source_folder + "/_*.html"],css: source_folder + "/scss/style.scss",js: source_folder + "/js/script.js",img: source_folder + "/images/**/*.{jpg,png,svg,gif,ico,webp}",fonts: source_folder + "/fonts/*.ttf",watch: {
    html: source_folder + "/**/*.html",css: source_folder + "/scss/**/*.scss",js: source_folder + "/js/**/*.js",webp}"
  },clean: "./" + project_folder + "/"
}

let {
  src,dest
} = require('gulp'),gulp = require('gulp'),browsersync = require("browser-sync").create(),fileinclude = require("gulp-file-include"),del = require("del"),scss = require("gulp-sass"),autoprefixer = require("gulp-autoprefixer"),group_media = require("gulp-group-css-media-queries"),clean_css = require("gulp-clean-css"),rename = require("gulp-rename"),uglify = require("gulp-uglify-es").default,imagemin = require("gulp-imagemin"),// webp = require('gulp-webp'),// webphtml = require('gulp-webp-html'),// webpcss = require("gulp-webpcss"),svgSprite = require('gulp-svg-sprite'),ttf2woff = require('gulp-ttf2woff'),ttf2woff2 = require('gulp-ttf2woff2'),fonter = require('gulp-fonter');

function browserSync(params) {
  browsersync.init({
    server: {
      baseDir: "./" + project_folder + "/"
    },port: 3000,notify: false
  })
}

function html() {
  return src(path.src.html)
    .pipe(fileinclude())
    // .pipe(webphtml())
    .pipe(dest(path.build.html))
    .pipe(browsersync.stream())
}

function css() {
  return src(path.src.css)
    .pipe(
      scss({
        outputStyle: "expanded"
      })
    )
    .pipe(
      group_media()
    )
    .pipe(
      autoprefixer({
        overrideBrowserslist: ["last 5 versions"],cascade: true
      })
    )
    // .pipe(webpcss())
    .pipe(dest(path.build.css))
    .pipe(clean_css())
    .pipe(
      rename({
        extname: ".min.css"
      })
    )
    .pipe(dest(path.build.css))
    .pipe(browsersync.stream())
}

function js() {
  return src(path.src.js)
    .pipe(fileinclude())
    .pipe(dest(path.build.js))
    .pipe(
      uglify()
    )
    .pipe(
      rename({
        extname: ".min.js"
      })
    )
    .pipe(dest(path.build.js))
    .pipe(browsersync.stream())
}

function images() {
  return src(path.src.img)
    // .pipe(
    //     webp({
    //         quality: 70
    //     })
    // )
    .pipe(dest(path.build.img))
    .pipe(src(path.src.img))
    .pipe(
      imagemin({
        progressive: true,svgoPlugins: [{
          removeViewBox: false
        }],interlaced: true,optimizationLevel: 3 // 0 to 7
      })
    )
    .pipe(dest(path.build.img))
    .pipe(browsersync.stream())
}

function fonts() {
  src(path.src.fonts)
    .pipe(ttf2woff())
    .pipe(dest(path.build.fonts));
  return src(path.src.fonts)
    .pipe(ttf2woff2())
    .pipe(dest(path.build.fonts));
};

gulp.task('otf2ttf',function() {
  return src([source_folder + '/fonts/*.otf'])
    .pipe(fonter({
      formats: ['ttf']
    }))
    .pipe(dest(source_folder + '/fonts/'));
})

gulp.task('svgSprite',function() {
  return gulp.src([source_folder + '/iconsprite/*.svg'])
    .pipe(svgSprite({
      mode: {
        stack: {
          sprite: "../icons/icons.svg",//sprite file name
          example: true
        }
      },}))
    .pipe(dest(path.build.img))
})

function fontsStyle(params) {
  let file_content = fs.readFileSync(source_folder + '/scss/fonts.scss');
  if (file_content == '') {
    fs.writeFile(source_folder + '/scss/fonts.scss','',cb);
    return fs.readdir(path.build.fonts,function(err,items) {
      if (items) {
        let c_fontname;
        for (var i = 0; i < items.length; i++) {
          let fontname = items[i].split('.');
          fontname = fontname[0];
          if (c_fontname != fontname) {
            fs.appendFile(source_folder + '/scss/fonts.scss','@include font("' + fontname + '","' + fontname + '","400","normal");\r\n',cb);
          }
          c_fontname = fontname;
        }
      }
    })
  }
}

function cb() {

}

function watchFiles(params) {
  gulp.watch([path.watch.html],html);
  gulp.watch([path.watch.css],css);
  gulp.watch([path.watch.js],js);
  gulp.watch([path.watch.img],images);
}

function clean(params) {
  return del(path.clean);
}

let build = gulp.series(clean,gulp.parallel(js,css,html,images,fonts),fontsStyle);
let watch = gulp.parallel(build,watchFiles,browserSync);

exports.fontsStyle = fontsStyle;
exports.fonts = fonts;
exports.images = images;
exports.js = js;
exports.css = css;
exports.html = html;
exports.build = build;
exports.watch = watch;
exports.default = watch;

package.json

{
  "name": "test","version": "1.0.0","main": "index.js","scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },"repository": {
    "type": "git","url": ""
  },"author": "","license": "ISC","bugs": {
    "url": ""
  },"homepage": "","devDependencies": {
    "browser-sync": "^2.26.7","del": "^5.1.0","gulp": "^4.0.2","gulp-autoprefixer": "^7.0.1","gulp-clean-css": "^4.3.0","gulp-file-include": "^2.2.2","gulp-fonter": "^0.3.0","gulp-group-css-media-queries": "^1.2.2","gulp-imagemin": "^7.1.0","gulp-rename": "^2.0.0","gulp-sass": "^4.1.0","gulp-svg-sprite": "^1.5.0","gulp-ttf2woff": "^1.1.1","gulp-ttf2woff2": "^3.0.0","gulp-uglify-es": "^2.0.0","gulp-webp": "^4.0.1","gulp-webp-html": "^1.0.2","gulp-webpcss": "^1.1.1","node-sass": "^4.14.1"
  },"dependencies": {},"description": ""
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...