Gulp总结

Gulp

基于node平台开发的前端构建工具,将机械化操作编写成任务,想要执行机械化操作只需要输入命令即可

Gulp的作用

  • 项目上线 HTML CSS JS文件压缩合并
  • 语法转换(es6 less等等)
  • 公共文件抽离
  • 修改文件浏览器自动刷新

Gulp的使用

命令行工具

sudo cnpm install gulp -g
sudo ln -s /usr/local/node/bin/gulp  /usr/local/bin/gulp
  • 使用npm install gulp下载gulp库文件
  • 在项目根目录下建立gulpfile.js文件
  • 重构项目的文件夹结构 src目录放置源代码文件 dist目录放置构建后文件
  • 在gulpfile.js文件中编写任务.
  • 在命令行工具中执行gulp任务
    在这里插入图片描述
    在这里插入图片描述

Gulp中提供的方法

  • gulp.src():获取任务要处理的文件
  • gulp.dest():输出文件
  • gulp.task():建立gulp任务
  • gulp.watch():监控文件的变化
//引进gulp模块
const gulp = require('gulp');
//建立gulp任务
gulp.task('test', () => {
    // 获取gulp要处理任务路径
    gulp.src('./src/css/base.css')
        .pipe(gulp.dest('./dist/css'))
})

在这里插入图片描述

在这里插入图片描述

Gulp插件

gulp属于轻内核的第三方模块

在这里插入图片描述

抽取公共文件

  @@include('./common/header.html')
const gulp = require('gulp');
const htmlmin = require('gulp-htmlmin');
const fileinclude = require('gulp-file-include');
const less = require('gulp-less');
const csso = require('gulp-csso');
const babel = require('gulp-babel');
const uglify = require('gulp-uglify')


// 建立gulp任务
gulp.task('test', () => {
    // 获取要处理的任务路径
    gulp.src('./src/css/base.css')

    // 将文件输出
    .pipe(gulp.dest('./dist/css'))
})

// 建立html任务
// 1.抽取公共文件 2.将html文件进行压缩合并

gulp.task('htmlmin', done => {
    // 获取要处理的任务路径
    gulp.src('./src/*.html')
        // 抽取文件公共文件
        .pipe(fileinclude())
        // 将html文件进行压缩并输出
        .pipe(htmlmin({ collapseWhitespace: true }))
        .pipe(gulp.dest('dist'));
    done()
})

// 建立css任务
// 1.less语法转换  2.将css文件进行压缩
gulp.task('cssmin', () => {
    // 获取要处理的任务路径
    gulp.src(['./src/css/*.less', './src/css/*.css'])
        // less语法转换
        .pipe(less())
        // 将css文件进行压缩
        .pipe(csso())

    // 将文件进行输出
    .pipe(gulp.dest('./dist/css'))
})

// 建立js任务
// 1.es6语法转换  2.将js文件进行压缩
gulp.task('jsmin', () => {
    // 获取要处理的任务路径
    gulp.src('./src/js/*.js')
        //es6语法转换
        .pipe(babel({
            presets: ['@babel/env']
        }))
        .pipe(uglify())

    // 将文件输出

    .pipe(gulp.dest('./dist/js'))
})

// 复制文件夹
gulp.task('copy', () => {
    gulp.src('./src/images/*')
        .pipe(gulp.dest('./dist/images'))

    gulp.src('./src/lib/*')
        .pipe(gulp.dest('./dist/lib'))

})

// 构建任务
gulp.task('default', ['htmlmin', 'cssmin', 'jsmin', 'copy']);

node-modules文件夹的问题

  • 文件夹及文件过多过碎 当我们将整体项目拷贝给别人的时候 传输速度会很慢很慢
  • 复杂模块依赖关系需要被记录 确保模块的版本与当前的版本保持一致 否则会导致当前项目运行报错

package.json

作用:项目描述文件 记录当前项目信息 例如项目名称 版本 作者 github地址 第三方模块等

使用npm init -y命令生成

在这里插入图片描述
在这里插入图片描述

{
  "name": "gulp-detail",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "mine": "^0.1.0"
  }
}

项目依赖

  • 在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖
  • 使用npm install 包名命令下载的文件会默认被添加到 package.json 文件的 dependencies
    在这里插入图片描述

开发依赖

  • 在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖
  • 使用npm install 包名 --save-dev命令将包添加到package.json文件的devDependencies字段中
    在这里插入图片描述

线上依赖:npm install --production

项目别名

{
    "name": "gulp-detail",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        
        "build": "nodemon app.js"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
        "mine": "^0.1.0"
    }
}
console.log('Gulp end');

在这里插入图片描述

package-lock.json

  • 锁定包的版本,确保再次下载时不会因为包版本不同而产生问题
  • 加快下载速度,因为该文件中已经记录了项目所依赖第三方包的树状结构和包的下载地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值