• gulp插件


      gulp只提供了4个实用的接口,但本身并不能做太多的事情,只能实现读取、写入文件以及监控文件等少部分功能。其他的实用功能都是依靠插件来进行扩展的。如下所示:

      ·编译sass :gulp-sass

      ·编译less:gulp-less

      ·合并文件:gulp-contat

      ·压缩js文件:gulp-uglify

      ·重命名js文件:gulp-rename

      ·优化图像文件:gulp-imagemin

      ·压缩css文件:gulp-minify-css

      ·创建本地服务器:gulp-connect

      ·实现实时预览:gulp-connect

    <使用插件>

      1,npm install xxx --save-dev 安装插

    2,在gulpfile.js顶部引入此插件

      3,在创建任务的时候使用此插件

     

    <自动加载 gulp-load-plugins>

      这个插件能自动帮你加载package.json文件里的gulp插件。假如项目依赖中使用了gulp-concat、gulp-connect、gulp-imagemin。那么我们可以在gulpfile.js中使用gulp-load-plugins来自动加载这三个插件。

    var gulp = require("gulp")
    var $ = require("gulp-load-plugins")();//加载该插件并马上运行它
    
    /*当要使用gulp-concat和gulp-connect的时候,就可以使用
       $.concat和$.connect来代替了。 省去了require的部分*/

     <将less编译为css>

    npm install gulp-less --save-dev

    var gulp = require("gulp");
    var less = require("gulp-less");
    gulp.task("less",function(){
      return gulp.src("app/less/*.less").pipe(less()).pipe(gulp.dest("dist/css"))
    })
    gulp.task("default",["less"])

    <将sass编译为css>

    npm install gulp-sass --save-dev  sass是用ruby编写的,所以应该先安装ruby(www.w3cplus.com/sassguide/install.html),再用ruby的包管理工具gem来安装sass

    var gulp = require("gulp");
    var sass = require("gulp-sass");
    gulp.task("sass",function(){
      return gulp.src("app/sass/*.scss").pipe(sass()).pipe(gulp.dest("dist/css")) 
    })

    gulp.task("default",["sass"])

    <运行本地服务器>

      有时候我们需要把文件放到本地服务器上去预览代码效果,gulp-connect可以帮我们创建一个本地服务器去运行我们的项目

      npm install gulp-connect --save-dev  加上一个--save-dev,把这个插件放到开发依赖里面

      ·创建任务,在gulpfile.js中引入该插件

    var gulp = require("gulp")
    var connect = require("gulp-connect")
    gulp.task("server",function(){
       connect.server({
          root:"dist",//服务器的根目录
          port:8080//服务器的地址,没有此配置项默认也是8080
       })
    })
    gulp.task("default",["server"])//运行此任务的时候会在8080上启动服务

    当希望文件变化的时候浏览器可以自动刷新,这样就不需要文件修改后手动去刷新浏览器了,代码如下:

    gulp.task("copy-html",function(){
      gulp.src("app/index.html")//指定源文件
            .pipe(gulp.dest("dist")) //拷贝到dist目录
            .pipe(connect.reload());//通知浏览器重启
    })    
    gulp.task("watch",function(){
      gulp.watch("app/index.html",["copy-html"]);//当index.html变化时执行copy-html任务
    })
    gulp.task("server",function(){
       connect.server({
           root:"dist ,
           port:8080,
           livereload:true//启用实时刷新功能
        })
    })
    gulp.task("default",["server","watch"])//运行此任务时,在8080启动服务器

    <合并js文件>

    使用gulp-concat把几个文件合并到一起

    npm install gulp-concat --save-dev

    var gulp = require("gulp");
    var sass = require("gulp-concat");
    gulp.task("concat",function(){
      return gulp.src(["app/js/*.js","!app/js/*.tmp.js"])//指定要合并的文件glob
                       .pipe(concat("app.js"))//进行合并并指定合并后的文件名
                       .pipe(gulp.dest("dist/js")) //输出到目标路径
    })
    
    gulp.task("default",["concat"])

    <压缩js>

    合并文件后可以对js文件进行压缩,最小化处理

    npm install gulp-uglify --save-dev

    var gulp = require("gulp");
    var sass = require("gulp-uglify");
    gulp.task("uglify",function(){
      return gulp.src(["app/js/*.js","!app/js/*.tmp.js"])//指定要合并的文件glob
                       .pipe(concat("app.js"))//进行合并并指定合并后的文件名
                       .pipe(uglify())//对合并后的app.js文件进行压缩
                       .pipe(gulp.dest("dist/js")) //输出到目标路径
    })
    
    gulp.task("default",["uglify"])

    <压缩html>

    gulp-minify-html插件用来压缩html文件

    var gulp = require("gulp");
    var sass = require("gulp-minify-html");
    gulp.task("minify-html",function(){
      return gulp.src("src/*.html")//指定要合并的html的glob
                       .pipe(minifyHtml())//压缩
                       .pipe(gulp.dest("dist/html")) //输出到目标路径
    })
    
    gulp.task("default",["minify-html"])

    <重命名js>

    var rename = require("gulp-rename");
    gulp.task("uglify",function(){
      return gulp.src(["app/js/*.js","!app/js/*.tmp.js"])//指定要合并的文件glob
                       .pipe(concat("app.js"))//进行合并并指定合并后的文件名
                       .pipe(gulp.dest("dist/js"))//将未压缩的文件保存一份
                       .pipe(uglify())//对合并后的app.js文件进行压缩
                       .pipe(rename("app.min.js"))//对此文件充命名
    /*
    当此处有多个文件的时候,可以传个参数
    .pipe(rename(function(path){
      //path.dirname
      path.basename += ".min";
    //path.extname = ".css"
    }))
    */
    .pipe(gulp.dest("dist/js")) //输出到目标路径 }) gulp.task("default",["uglify"])

    <压缩图片>

    在保证不改变图片质量的情况下,让图像文件的体积变得更小一点。可以使用gulp-imagemin,使用的API有所改变

    npm install gulp-imagemin --save-dev

    var imagemin = require("gulp-imagemin");
    gulp.task("copy-images",function(){
      return gulp.src("app/imgs/*.{jpg,png}")//指定要压缩的图片
                       .pipe(imagemin())//进行图片压缩
                       .pipe(gulp.dest("dist"))//输出目的地 
    })
    gulp.task("default",["copy-images"])

    <js代码检查>

    可以用gulp-jshint进行js代码检查

    npm install gulp-jshint --save-dev

    var jshint = require("gulp-jshint");
    gulp.task("jsLint",function(){
      gulp.src("src/*.js")
            .pipe(jshint)//进行代码检查
            .pipe(jshint.reporter())//输出检查结果
    })

     《认识Yeoman》

    <什么是yeoman>

    yeoman帮助我们创建项目,提供更好的工具来使我们的项目更多样化。yeoman提供generator系统,一个generator是一个插件,在我们的项目上使用“yo”命令时,会运行该generator。通过这些官方的generators,推出了yeoman工作流,工作流是一个健壮的、有自己特色的客户端堆栈,包含能快速构建漂亮的网络应用的工具和框架。yeoman提供了负责开始项目开发的一切,没有任何让人头痛的手动配置。

    采用模块化结构,yeoman利用从几个开源社区网站学习到的经验,确保智能的进行开发。基于良好的文档基础以及深思熟虑的项目构建过程,yeoman提供测试和其他更多技术,所以开发人员可以更专注于解决方案。

    yeoman提供了三个工具:脚手架(yo)、构建工具(grunt)、包管理器(brower)。这三个工具是分别独立开发的,但是需要配合使用,来实现我们更高效的工作流模式。

    <安装yeoman> 

      ·安装yeoman

      npm install -g yo

      ·通过http://yeoman.io找到一个官方生成器gulp-webapp

      npm install -g generator-gulp-webapp

      ·生成一个项目

      yo gulp-webapp gulpDemo

    生成react脚手架

    首先确保自己安装了nodejs,然后全局安装yeoman npm install -g yo 然后直接安装脚手架 npm install -g generator-reactpackage,在合适的地方新建一个文件夹,在文件夹下运行: yo reactpackage

    然后使用以下命令:

    npm run dev //项目开发过程使用,启动服务,实时刷新

    npm run build //开发完成之后打包文件(js、css分开打包

  • 相关阅读:
    用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单
    用 Flask 来写个轻博客 (18) — 使用工厂模式来生成应用对象
    用 Flask 来写个轻博客 (18) — 使用工厂模式来生成应用对象
    用 Flask 来写个轻博客 (17) — MV(C)_应用蓝图来重构项目
    用 Flask 来写个轻博客 (17) — MV(C)_应用蓝图来重构项目
    Nginx详解八:Nginx基础篇之Nginx请求限制的配置语法与原理
    Nginx详解七:Nginx基础篇之Nginx官方模块
    Nginx详解六:Nginx基础篇之Nginx日志
    Nginx详解五:Nginx基础篇之HTTP请求
    Nginx详解四:Nginx基础篇之目录和配置语法
  • 原文地址:https://www.cnblogs.com/web-fengmin/p/6289952.html
Copyright © 2020-2023  润新知