gitbook教程:

https://dragon8github.gitbooks.io/gulp-webpack/content/an-zhuang-gulp-4-0.html

gulpfile.js

// cnpm i -g gulpjs/gulp#4.0 && cnpm i gulpjs/gulp#4.0 gulp-sass fs-extra gulp-autoprefixer gulp-sourcemaps browser-sync gulp-ejs gulp-rename gulp-babel babel-core babel-preset-env babel-preset-stage-2 gulp-typescript typescript -S
const gulp = require('gulp')
const babel = require('gulp-babel')
const ts = require('gulp-typescript')
const sass = require('gulp-sass')
const autoprefixer = require('gulp-autoprefixer')
const sourcemaps = require('gulp-sourcemaps')
const rename = require('gulp-rename')
const browserSync = require('browser-sync').create()
const fse = require('fs-extra')
const path = require('path'); // 初始化
gulp.task('init', function () {
// 获取当前文件路径(兼容windows)
var PWD = process.env.PWD || process.cwd();
var dirs = ['dist',
'dist/html',
'dist/css',
'dist/img',
'dist/js',
'src','src/sass',
'src/js',
'src/img',
'src/sprite'
]; dirs.forEach(function (item,index) {
try {
// 使用mkdirSync方法新建文件夹
fse.mkdirSync(path.join(PWD + '/'+ item));
} catch (err) {
console.log(err.message);
}
})
}) // 编译typescript
gulp.task('ts', function () {
return gulp.src('./src/js/*.ts')
.pipe(ts({
'noImplicitAny': true,
'declaration': true,
'target': 'es5'
}))
.js.pipe(gulp.dest('./dist/js/'))
}) // 编译babel
gulp.task('babel', function () {
return gulp.src('./src/js/*.es')
.pipe(sourcemaps.init())
.pipe(babel({
presets: [
[
'env',
{
'targets': {
'browsers': ['last 5 versions', 'ie >= 8']
}
}
],
'babel-preset-stage-2'
]
}))
.pipe(sourcemaps.write('./map')) // 这里的地址是相对于gulp.dest输出目录的,并且必须在gulp.dest输出之前执行
.pipe(gulp.dest('./dist/js')) }) // 编译sass
gulp.task('sass', function () {
return gulp.src('./src/sass/*.scss')
.pipe(sourcemaps.init())
.pipe(autoprefixer({
browsers: ['last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'],
cascade: true,
remove: true
}))
.pipe(sass().on('error', sass.logError))
.pipe(sourcemaps.write('./map')) // 这里的地址是相对于gulp.dest输出目录的,并且必须在gulp.dest输出之前执行
.pipe(gulp.dest('./dist/assets/css'))
}) // watch
gulp.task('watch', function () {
// 监听重载文件
var files = [
'src/html/*.html',
'src/css/*.css',
'src/js/*.es',
'src/js/*.ts',
'src/sprite/*.png'
]
browserSync.init(files, {
server: {
baseDir: './src/html/',
}
})
gulp.watch('./src/sass/*.scss', gulp.series('sass'))
gulp.watch('./src/js/*.es', gulp.series('babel'))
gulp.watch('./src/js/*.js', gulp.series('babel'))
gulp.watch('./src/html/*.html').on('change', browserSync.reload)
}) // 开发环境
gulp.task('dev', gulp.series('init', gulp.parallel('sass', 'babel', 'ts'), 'watch'))

gulp#4.0的更多相关文章

  1. Gulp 从0开始

    http://www.w3ctech.com/topic/134  (该文章有很多错误) http://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97 ...

  2. gulp#4.0 Did you forget to signal async completion?

    异常截图 解决方案: https://stackoverflow.com/questions/36897877/gulp-error-the-following-tasks-did-not-compl ...

  3. gulp顺序执行任务

    gulp的任务的执行是异步的. 所以,当我写完一系列的任务,准备一股脑地执行. # gulp.task('prod', ['clean', 'compass', 'image', 'style', ' ...

  4. 前端工程筹建NodeJs+gulp+bower

    1.安装nodejs nodejs 官网下载安装文件 安装完成之后,在命令窗口执行,(显示nodejs版本) 和(显示npm版本)可以使用这两个命令查看是否安装成功: node -v npm -v 2 ...

  5. 前端工程搭建NodeJs+gulp+bower

    需要node.npm的事先安装!! 1.nodejs安装程序会在环境变量中添加两个变量: 系统环境变量中:path 增加C:\Program Files\nodejs\ 因为在该目下存在node.ex ...

  6. gulp实用配置(2)——中小项目

    上一篇的gulp配置很简单,主要就是为了demo的查看和调试,这一篇则会相对详细一些,包括压缩合并打时间戳等. 在互联网环境比较好的城市,需要多人协作的,大一点的项目应该都用上了模块化(这里主要指co ...

  7. gulp的安装与使用【附配置代码】

    备忘 1.配置 下载安装node.js node -v //检查nodejs版本   npm(nodejs package manager)nodejs包管理工具   nodejs完毕在命令行输入np ...

  8. gulp学习-metamask前端使用

    https://www.gulpjs.com.cn/docs/getting-started/ ,这个是3.9.0版本 后面发现安装的版本是4.0.0,看下面这个: https://github.co ...

  9. 使用gulp 合并压缩打包,实时监控文件,实现本地server

    今天不讲webpack,就说说gulp是怎么进行压缩合并打包 首先你的安装gulp : npm install gulp -g --save-dev 然后最基本的你因该知道gulp 的四个方法, gu ...

随机推荐

  1. .NET MVC自定义错误处理页面的方法

    在ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAttribute特性,那 ...

  2. MySql无法远程登录以及IP被锁解决办法

    授权 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;Query OK, 0 rows aff ...

  3. Angular路由与Nodejs路由的区别

    转自:http://www.imooc.com/qadetail/114683?t=148182 觉得angualr.js的路由是针对于单页面的路由,每次路由发生变化,只是页面的状态发生变化,页面本身 ...

  4. SMTP 协议系列一

    解说一下DOS下telnet命令发送邮件 步骤,以我的163邮箱为例 1.開始-->cmd 进入到dos里面 2.输入telnet  smtp.163.com  25 C: \Users \Ad ...

  5. (字符串)最长公共子序列(Longest-Common-Subsequence,LCS)

    问题: 最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的. 例如序列X=ABCBDAB,Y=BDCABA.序列BCA是X和Y的一个公共子序列,但是不 ...

  6. Opera Unite 用户指南

    Opera Unite 用户指南 1 Opera Unite 简介 Opera Unite is a collaborative technology that allows you to share ...

  7. Office WORD如何在图片上添加文字

    如图所示,在图片格式中选择图片衬于文字下方即可,这样看起来感觉就像在图片上直接加字一样,没有生硬的感觉. 最终效果: Word如何在图片上添加文字Word如何在图片上添加文字Word如何在图片上添加文 ...

  8. 微信小程序开发者工具下载地址

    下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

  9. 算法笔记_112:第五届蓝桥杯软件类省赛真题(Java本科B组)试题解答

     目录 1 武功秘籍 2 切面条 3 猜字母 4 大衍数列 5 圆周率 6 奇怪的分式 7 扑克序列 8 分糖果 9 地宫取宝 10 矩阵翻硬币   前言:以下试题解答代码部分仅供参考,若有不当之处, ...

  10. 算法笔记_177:历届试题 城市建设(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修.市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他. C市中有 ...