gulp

gulp 是一个基于node环境的项目开发的 自动化打包构建工具

项目上线时,体积越小越好,自动化打包构建工具可以帮助我们实现

一.gulp命令

1. npm init

在控制台输出npm init

package name:(game)    输入包(项目)的名字,自己定义

version(1.0.0)    设置初始版本    直接回车代表默认1.0.0版本

description:        描述信息,自己定义

entry point:(index.js)    入口文件,这个项目从哪开始,回车代表默认index.js

test command:    测试的命令,回车代表没有不写

git repository    git仓库地址,这个包在git上存储的地址

keywords:    关键字,在github官网搜索的关键字

author:    作者名

license(isc)        许可证,直接回车

以上都输出完后,会把你输入的所有数据都放在一个对象里显示,

并提示Is this OK?(yes)    回车表示默认yes

创建成功后,会在当前路径上有一个package.json文件

但是这个文件有两个参数没有帮你设置需要自己手动设置

"dependencies": {

  },

"devDependencies": {

  }

dependencies表示包(项目)运行所依赖的第三方模块或者包

devDependencies表示开发环境使用的第三方模块或者包

相当于jq中开发使用的jq代码和项目上线时使用的代码

想要添加第三方的包就在当前目录下打开终端,输入 npm install +包名 +  --save

2.npm help

如果对某条命令不熟悉 可以使用`npm <command> -h` 来查看帮助信息

比如在控制台输出init不知道参数是什么,可以直接在控制台打印 npm init help查看参数信息

快捷写法 -h

3.npm install

本地的包默认是在当前路径下,创建node_modules目录,里面存放所有的安装包

如果指定了 "--global" 则是全局安装的包,可以在任意路径执行包里的命令

安装包也可以指定一个包名,如果没有指定,默认安装'package.json'里所有依赖"dependencies"的安装包

安装指定的安装包也可以指定版本'npm install jquery@2.X'

如果需要记录该依赖,则需要指定`--save`或者`-S`参数:`npm install jquery -S`

别人下载你的代码不会下载第三方包,没有记录依赖的话,协助开发的时候,别人的代码会因为没有第三方包出错

如果需要记录该调试依赖,则需要指定`--dev-save`或者`-D`参数 `npm install jquery -D`

快捷写法 i

4.npm uninstall

卸载一个安装包,以及一个别名方法:`remove`

用法和安装一样的,支持`-S`和-`D`参数,表示连同依赖一并删除

快捷写法 un

5.npm run

用来运行脚本命令的,就是package.json里面scripts定义的命令

二.任务机制gulp

需要执行gulp命令需要在当前文件的路径下创建一个gulpfile.js文件,用来定义gulp命令

1.引入gulp模块,const gulp = require("gulp")

2.引入构建过程中 所需要的第三方的包

const concat = require("gulp-concat") 

3.使用解构赋值 按需提取模块的方法(提取src和dest方法)

let { src, dest } = gulp;

4.定义gulp任务,gulp运行时 会自动读取该文件的内容

gulp是任务机制,每个任务 是一个异步函数 通过exports导出该任务,最少需要有一个任务

exports.defualt = function(cd){ cd()}

任务通知机制:必须要有一个异步返回的信号

这个信号可以是一个promise对象 或者回调cd

直接在终端运行gulp命令 相当于`gulp defualt` 执行的是default任务

5.使用gulp重构文件  

注意:所有使用的方法必须像上面一样引入第三方包

(1)复制src下的文本内容到dist目录下

exports.default = function (done) {

    return src("./src/foo.txt").pipe(dest("./dist")); // 复制

}

(2)执行任务js   执行动作对应一个函数

exports.css = function () {

    return src("./src/css/*.css")

        .pipe(concatCss("index.css"))    //pipe(里面的concatCss是第三方包里的方法,包括以下所有)

        .pipe(cleanCss({ compatibility: 'ie8' }))

        .pipe(rename({ extname: '.min.css' }))

        .pipe(dest("./dist"));

}

(3)执行sass和less 转义成css

exports.sass = function () {

    return src("./src/scss/demo.scss")

        .pipe(sassCss())

        .pipe(dest("./dist"))

}

(4)重构html文件内容

exports.html = function () {

    // html输出之后 注意嵌入资源css,js之类的路径 要转化

    return src("./index.html")

        .pipe(htmlmin({

            removeComments: true, // 清除HTML注释

            collapseWhitespace: true, // 压缩HTML

            collapseBooleanAttributes: true, // 省略布尔属性的值

            removeEmptyAttributes: true, // 删除所有空格作属性值

            removeScriptTypeAttributes: true, // 删除<script>的type

            removeStyleLinkTypeAttributes: true, //删除<style>的type

            minifyJS: true, // 压缩页面JS

            minifyCSS: true // 压缩页面CSS

        }))

        .pipe(dest("./dist"));

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ctrl+c两次 关闭Node.jsdir(查看当前文件下的所有文件)tree(查看 当前目录下所有目录的文件夹...
    一个健康马阅读 682评论 0 0
  • 在现在的前端开发中,前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等等一些原本后端的思想开始...
    Charlot阅读 5,722评论 1 32
  • 最近换了家新公司,由于是创业公司,项目基本从零开始搭建。工作几年,也没想过写点什么技术性的东西,今天突然心血来潮,...
    等鹿的小喵喵阅读 1,931评论 1 0
  • 技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1....
    CurryCoder阅读 498评论 0 2
  • 前端的构建工具常见的有Grunt、Gulp、Webpack三种,Grunt比较老旧,功能少,更新少,插件少。 概念...
    小五同学H阅读 70,111评论 0 26

友情链接更多精彩内容