使用:
使用案例:
// gulp的入口文件
exports.foo = () => {
console.log('foo task working~');
}
运行结果:
解决方式:
// gulp的入口文件
exports.foo = done => {
console.log('foo task working~');
done() // 标识任务完成
}
默认任务default:执行方式为yarn gulp
exports.default = done => {
console.log('default task working~');
done();
}
const gulp = require('gulp');
gulp.task('bar', done => {
console.log('bar working~');
done();
})
// gulp的入口文件
const { series } = require('gulp');
const task1 = done => {
setTimeout(() => {
console.log('task1 working~');
done() // 标识任务完成
}, 1000);
}
const task2 = done => {
setTimeout(() => {
console.log('task2 working~');
done();
}, 1000);
}
const task3 = done => {
setTimeout(() => {
console.log('task3 working~');
done();
}, 1000);
}
exports.foo = series(task1, task2, task3);
// gulp的入口文件
const { parallel } = require('gulp');
const task1 = done => {
setTimeout(() => {
console.log('task1 working~');
done() // 标识任务完成
}, 1000);
}
const task2 = done => {
setTimeout(() => {
console.log('task2 working~');
done();
}, 1000);
}
const task3 = done => {
setTimeout(() => {
console.log('task3 working~');
done();
}, 1000);
}
exports.bar = parallel(task1, task2, task3);
const fs = require('fs');
exports.callback = done => {
console.log('callback task~');
done();
}
exports.callback_error = done => {
console.log("callback task~");
done(new Error('task failed!'));
}
exports.promise = () => {
console.log('promise task~');
return Promise.resolve;
}
exports.promise_error = () => {
console.log("promise task~");
return Promise.reject(new Error("task failed~"))
}
const timeout = time => {
return new Promise(resolve => {
setTimeout(resolve, time);
})
}
exports.async = async () => {
await timeout(1000);
console.log("async task~");
}
exports.stream = () => {
const readStream = fs.createReadStream('package.json');
const writeStream = fs.createWriteStream('temp.txt');
readStream.pipe(writeStream);
return readStream;
}
exports.stream = done => {
const readStream = fs.createReadStream('package.json');
const writeStream = fs.createWriteStream('temp.txt');
readStream.pipe(writeStream);
readStream.on('end', () => {
done();
})
}
const fs = require('fs');
const { Transform } = require('stream');
exports.default = () => {
// 文件读取流
const read = fs.createReadStream('public.css');
// 文件写入流
const write = fs.createWriteStream("public.min.css");
// 文件转换流
const transform = new Transform({
transform: (chunk, encoding, callback) => {
// 核心转换过程实现
// chunk=> 读取流中读取到的内容(Buffer)
const input = chunk.toString();
const output = input.replace(/\s+/g, '').replace(/\/\*.+?\*\//g, "");
callback(null, output);
}
})
// 把读取出来的文件流导入写入文件流
read
.pipe(transform) // 转换
.pipe(write); // 写入
return read;
}
const { src, dest } = require('gulp');
const cleanCss = require('gulp-clean-css');
const rename = require('gulp-rename');
exports.default = () => {
return src('src/*.css')
.pipe(cleanCss())
.pipe(rename({ extname: '.min.css' }))
.pipe(dest('dist'))
}
文件拷贝:base为yarn gulp style编译后放入的dist文件夹的基准路径("dist/assets/styles")
const { src, dest } = require('gulp');
const style = () => {
return src('src/assets/styles/*.scss', { base: 'src' })
.pipe(dest('dist'))
}
module.exports = {
style
}
将scss文件转换为css :yarn add gulp-sass --dev
const { src, dest } = require('gulp');
const sass = require('gulp-sass');
const style = () => {
return src('src/assets/styles/*.scss', { base: 'src' })
.pipe(sass())
.pipe(dest('dist'))
}
module.exports = {
style
}