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. 【Hadoop】Combiner的本质是迷你的reducer,不能随意使用

    问题提出: 众所周知,Hadoop框架使用Mapper将数据处理成一个<key,value>键值对,再网络节点间对其进行整理(shuffle),然后使用Reducer处理数据并进行最终输出 ...

  2. IDEA报错Target level '1.6' is incompatible with source level '1.7'

    解决IDEA 编译级别 Error:java: Target level '1.6' is incompatible with source level '1.7'. A target level ' ...

  3. 一段遍历4X4表格,取出每个单元格内容组合成文本的JS代码

    遍历表格的JS容易忘,留个随笔以备忘. var tableData="";    var table=document.getElementById("XXTableId ...

  4. Linux中如何开启8080端口供外界访问

    装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理.于是请教百度大神,在费一番周折后,总结步骤如下: 1.修改文件/etc/sysconfig/iptables [root@bogon ~ ...

  5. project开发的程序设计与逻辑设计

    非常多时候我们要做庞大project, 就像一棵大树, 方方面面都有自己的细枝末节,而作为开发员的我们,无法时时刻刻去保持对程序的全面认知,所以我们要把程序设计与逻辑设计区分开来. 那么什么是程序设计 ...

  6. Java连接Oracle数据库示例

    1.数据库复用模块 package cn.jzy.database; import java.sql.Connection; import java.sql.DriverManager; import ...

  7. Java从零开始学十七(简单工厂)

    简单工厂的实现 实现一个计算器:要求输入2个数,和运算符,得到结果 Operation类 package com.pb.demo1; public class Operation { private ...

  8. h5 微场景

    兔展: http://www.rabbitpre.com/ 易企秀: http://www.eqxiu.com/site/show 云来: http://www.liveapp.cn/

  9. 〖Linux〗apt-get wait for another apt process

    #!/bin/bash i= tput sc >& || \ >&; do )) in ) j="-" ;; ) j="\\" ;; ...

  10. OpenGL学习(hello)

    #include <gl/glut.h> void display(void) { glClear(GL_COLOR_BUFFER_BIT); // 清除颜色缓冲以及深度缓冲 glColo ...