问题描述
下午好,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 (将#修改为@)