美文网首页
gulp 使用

gulp 使用

作者: 郭先生_515 | 来源:发表于2019-04-04 18:57 被阅读0次
1. 安装nodeJS
2. 全局安装 gulp
npm install gulp -g
3.首先,我们新建一个gulp文件夹,并在该目录下执行 npm init 或者 npm init -y 命令,然后gulp 文件夹会多一个package.json文件:
{
  "name": "gulp-demo",
  "version": "1.0.0",
  "description": "gulp构建工具",
  "main": "gulpfile.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "gulp"
  ],
  "author": "guofq",
  "license": "ISC"
}

然后在项目中安装 gulp 以及依赖项:

npm install gulp -D

执行完之后,gulp将创建node_modules文件夹
然后我们建如下图的项目目录:


image.png
4. 根目录下创建一个gulpfile.js

第一个Gulp任务

// 默认任务 default
let gulp = require('gulp');
gulp.task('default', function() {
      console.log('Hello World!');
});
// 还可以使用 promise 实现
gulp.task('default', () => {
    return new Promise(function (resolve, reject) {
        console.log('hello, world123!');
        resolve();
    })
})

然后在命令窗口输入 gulp,即可看到Hello World! 或 hello,world123!

我们还可以自定义任务名:

let gulp = require('gulp');
gulp.task('hello', function() {
      console.log('Hello World!');
});

那我们就需要在命令窗口执行 gulp hello 了。

5. Gulp执行预处理

我们使用gulp-sass插件来编译Sass

npm install gulp-sass -D

我们需要给sass任务提供源文件和输出位置。
我们将会用到gulp.src() 和 gulp.dest()。

sass处理之后,我们希望它在 app/css 内生成相应的 css 文件

let gulp = require('gulp');
let sass = require('gulp-sass');
gulp.task('sass', function(){
    return gulp.src('app/scss/styles.scss')
        .pipe(sass()) // sass转css方法
        .pipe(gulp.dest('app/css'))
});
// Promise 写法
gulp.task('sass', () => {
    return new Promise(function (resolve, reject) {
        gulp.src('app/scss/**/*.scss')//待编译文件
        .pipe(sass())                 //sass转css方法
        .pipe(gulp.dest('app/css'))   //输出文件路径
        resolve();
    });
})

app/sass/style.scss

body {
    background: skyblue;
    color: #fff;
    text-align: center;
    height: 120px;
    width: 100%;
    display: block;
}

大部分时候,我们只需要用到下面4种匹配模式:
*.scss : *.scss 匹配当前目录下所有scss文件
**/*.scss : 匹配当前目录及其子目录下的所有scss文件。
!not-me.scss :!号移除匹配的文件,这里将移除not-me.scss
*.+(scss|sass) :+号后面会跟着圆括号,里面的元素用|分割,匹配多个选项。这里将匹配scss和sass文件。

然后我们执行 gulp sass,即可在app/css 下生成相应的 css 文件,如下图


image.png

监听 sass 文件修改

let gulp = require('gulp');
let sass = require('gulp-sass');
gulp.task('sass', () => {
    return new Promise((resolve, reject) => {
        gulp.src('app/scss/**/*.scss')
        .pipe(sass())
        .pipe(gulp.dest('app/css'))
        resolve()
    })
})
gulp.task('watch', () => {
    gulp.watch('app/scss/**/*.scss', ['sass']);
})

执行 gulp watch,效果如下图,一直处于监听 scss 中


image.png
6. 使用Browser Sync自动刷新

Browser Sync 帮助我们搭建简单的本地服务器并能实时刷新浏览器

npm install browser-sync --save-dev

这里没有gulp- 前缀,切记

创建一个 broswerSync 任务,我们需要告知它,根目录在哪里

let browserSync = require('browser-sync');
gulp.task('browserSync', () => {
    browserSync({
        server: {
            baseDir: 'app'
        },
        port: 3001 // 默认 3000
    })
})

然后我们创建一个能够实时刷新浏览器的本地服务器

let gulp = require('gulp');
let sass = require('gulp-sass');
let browserSync = require('browser-sync');
gulp.task('browserSync', () => {
    browserSync({
        server: {
            baseDir: 'app'
        }
        port: 3001 // 默认 3000
    })
})
gulp.task('sass', () => {
    return new Promise((resolve, reject) => {
        gulp.src('app/scss/**/*.scss')
        .pipe(sass())
        .pipe(gulp.dest('app/css'))
        .pipe(browserSync.reload({
            stream: true
        }));
        resolve();
    })
})
gulp.task('watch', ['browserSync', 'sass'], () => {
    gulp.watch('app/scss/**/*.scss', ['sass']); // 监听scss文件修改
    gulp.watch('app/*.html', browserSync.reload); // 监听 html 页面修改
    gulp.watch('app/js/**/*.js', browserSync.reload); // 监听 js 修改
})

到目前为止,我们做了三件事:

可运转的web开发服务
使用Sass预处理器
自动刷新浏览器

7. 使用gulp-useref 和 gulp-concat 合并文件
npm install gulp-useref --save-dev   // 合并 js 文件
npm install gulp-concat --save-dev   // 连接输出文件名

目录结构如下


image.png

新建 js/index.js 和 js/main.js 以及 空的 build 文件夹,首页接入压缩后的 name.min.js

let gulp = require('gulp');
let sass = require('gulp-sass');
let useref = require('gulp-useref');
let concat = require('gulp-concat');

let pathjs = {  
    scripts:['app/js/index.js','app/js/main.js']  
}
gulp.task('useref', function(){
    return gulp.src(pathjs.scripts)
    .pipe(concat('main.min.js'))  // 连接的文件名
    .pipe(useref()) // 合并 js 文件 (不压缩)
    .pipe(gulp.dest('app/build')); // 生成文件的目录
});

然后执行 gulp useref,即可在 build 文件夹下生成 main.min.js,如下图:


main.min.js 文件内容(未被压缩):

var index={};  
index={  
    test:function(argument){  
        console.log('test');  
    }  
}  
index.test();  
var main = {};  
main.test=function(argument){  
    console.log("main test");  
}  
main.test();  
8. 使用gulp-uglify 压缩 js 文件
npm install gulp-uglify --save-dev

话不多说,上代码:

let gulp = require('gulp');
let sass = require('gulp-sass');
let useref = require('gulp-useref');
let concat = require('gulp-concat');
let minijs = require('gulp-uglify');

let paths = {  
    scripts:['app/js/index.js','app/js/main.js']  
}
gulp.task('minijs', function(){
    return gulp.src(paths.scripts)
    .pipe(concat('main.min.js'))
    .pipe(minijs())
    .pipe(gulp.dest('app/build'));
});

生成的main.min.js (压缩代码):

var index={};(index={test:function(t){console.log("test")}}).test();
var main={test:function(t){console.log("main test")}};main.test();
9. 使用gulp-clean-css合并压缩css

gulp-useref 同样可以用在 css 上。除了压缩,需要区分,其它内容同js一样。所以我们使用 gulp-if 来做不同处理。

使用gulp-clean-css压缩css。

npm install gulp-if gulp-clean-css --save-dev
let gulp = require('gulp');
let sass = require('gulp-sass');
let useref = require('gulp-useref');
let concat = require('gulp-concat'); // css js 合并
var minicss= require('gulp-clean-css'); // css 压缩

var pathcss = {  
    styles:styles:['app/css/style.css', 'app/css/index.css', 'app/css/detail.css']
}
gulp.task('minicss', function(){
    return gulp.src(pathcss.styles)
    .pipe(concat('main.min.css'))
    .pipe(minicss())
    .pipe(gulp.dest('app/build'));
});

相关文章

  • Gulp 使用方法(教程一)

    Gulp 官网 目录 Gulp 环境 Gulp 环境 初始化目录结构 安装 gulp gulp 的简单使用 使用 ...

  • gulp的简单使用

    gulp使用流程:安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gu...

  • gulp入门

    安装gulp 安装gulp插件 gulp使用与执行 在目录创建gulpfile.js文件 执行:gulp defa...

  • html代码复用各种方法

    1.gulp-file-include(工具) 使用步骤:1.安装gulp以及gulp-file-include(...

  • 前端构建工具gulp构建项目

    使用前提条件 gulp是基于Nodejs的自动任务运行器,gulp依赖于nodejs,因此,在使用gulp之前需要...

  • gulp自动化构建html静态资源路径版本号添加和替换

    在使用gulp自动添加版本号时稍作一点修改,欢迎指正。 我使用的是(gulp-rev+gulp-rev-colle...

  • gulp资源整理

    Gulp官网 Gulp中文网 Gulp插件网 博客: 前端构建工具gulpjs的使用介绍及技巧 - 无双 gulp...

  • Gulp4(一)——基本使用及核心原理

    目录 GlupGulp的使用步骤Gulp的基本使用安装起步默认任务gulp4.0之前的任务注册Gulp的组合任务G...

  • gulp入门教程详解

    最近使用gulp自动化构建工具来开发网站,在此给大家分享一下使用gulp的一些使用教程。 一 gulp安装 1、安...

  • gulp 使用教程

    【gulp 使用教程】 【gulp 使用教程】一、温馨提示1.1 使用此教程前需自身已经熟悉 node 以及 np...

网友评论

      本文标题:gulp 使用

      本文链接:https://www.haomeiwen.com/subject/hasqiqtx.html