zoukankan      html  css  js  c++  java
  • gulp安装并使用

    这几天去面试,经常被问到如何管理前端项目代码的问题(目前用的是rails),后来去了解了一下,有一个叫gulp的前端自动化构建工具,就决定学习一下。

    网上找了好多参考资料,现在整理一遍。

    一. 安装

     先全局安装

     npm install --global gulp // 有时候需要sudo npm install --global gulp

       到项目所在文件夹

       npm install --save-dev gulp  //  作为项目的开发依赖安装,安装完后会出现一个node_modules文件夹

       此时,如果输入gulp,会出现如下提示:

     No gulpfile found

       所以需要在项目的跟目录新建一个gulpfile.js的文件

     文件内容: (关于这一部分,等会儿再说)

      var gulp = require('gulp');          // 引用gulp

      gulp.task('default', function() {   // 设置默认任务

        // 将你的默认的任务代码放在这

      });   

        再执行gulp命令,会出现如下提示: 

      [09:51:56] Using gulpfile ~/work/demos/todoapp/gulpfile.js
      [09:51:56] Starting 'default'...
      [09:51:56] Finished 'default' after 89 μs

     证明gulp已经安装完成,并且可以执行default方法了。

     但是到这里还远远不够,我们需要继续创建几个文件夹和文件。

        先在根目录下创建两个文件夹:

            src(用于存放项目的html,css,js)和build(用于存放编译压缩过的html,css,js)

            再在这两个文件夹中分别创建stylesscripts文件夹,在src中创建一个index.html文件

        现在执行npm init // 创建一个 package.json 文件,便于与开发团队其他成员分享当前环境信息

    二. API

        需要了解的就4个API,gulp.src(),gulp.dest(),gulp.task(),以及gulp.watch()。可以参考文档

        1. gulp.src(globs[, options])

      gulp.src("src/scripts/*.js")    //获取到src/scripts文件夹下的所有js文件流

        .pipe(gulp.dest("build/scripts"));   // 写入到目标文件夹build/scripts中,注意这里只能是文件夹的名称

           globs参数: // 文件匹配模式,类似正则

      类型: String or Array

         这个可以参考node-glob       

        2. gulp.dest(path[, options])

      path :  写入文件的路径 // 只能是文件夹的名称,如果目标文件夹不存在,会自动创建  

        3. gulp.task(name[, deps, fn])

      name: 任务名

      deps:任务开始前需要被执行或完成(依赖)的任务,类型:array 

      gulp.task('mytask', ['array', 'of', 'task', 'names'], function() {
        
      });

    这里需要注意的是,如果依赖的任务是异步执行的,就需要手动做一些处理: 执行回调、返回promise或返回一个事件流。这些链接的文档中都有,用到的话,可以参看文档。

     fn: task中需要执行的代码

        4. gulp.watch(glob[, opts], tasks) 或 gulp.watch(glob[, opts, cb])

      gulp.watch(glob[, opts], tasks) 

      tasks: 类型 Array

      当监视的文件改变时,会执行tasks里面的task

           gulp.watch("src/*.html", ["reload", "uglify"]);

      gulp.task("reload", function(){

        // reload

      });

      gulp.task("uglify", function(){

        // gulify

      });

      gulp.watch(glob[, opts, cb])

       gulp.watch("src/*.html", function(event){

        console.log("File" + event.path + "was" + event.type + ", running tasks...");  

      });  

      每次监视的文件改变,都会执行回调函数。

      cb回调函数会传入一个event对象,描述文件的变化。

      event.type : added, deleted, changed

      event.path: 触发事件的文件路径

      好了,API部分就不多讲了,网上有很多相关的讲解,讲得很细致,我就不赘述了。

    三. 插件

      插件非常多,可以参考文档

      安装方法和使用方法,文档中也都有

    四. 构建任务

       了解了上面的基础之后,我最关心的就是如何构建一个server,监听工作目录,当目录中有文件改变时,就自动重新加载页面。

      首先,要安装这个插件 browser-sync 

      BrowserSync可以同时同步刷新多个浏览器,更神奇的是你在一个浏览器中滚动页面、点击按钮、输入框中输入信息等用户行为也会同步到每个浏览器中。

      npm install gulp-browser-sync --save-dev

      gulpfile.js中:

      var browserSync = require('browser-sync');

      gulp.task('serve', function() {
        browserSync.init({
          server: './src/',  // 解析src下的html

          port: 3000
        });

        gulp.watch("src/*.html").on("change",browserSync.reload);
      });

      

      gulp.task('default', ['serve'], function() {
        
      });

      这个我也找了相关博客,可以参考        

      命令行输入gulp,就会自动打开浏览器,并且默认地址为:http://localhost:3000

      现在,我们可以装一些需要的插件,写入相关gulp.task(),来管理我们的项目了。

      ps:如果有理解的不对的地方,欢迎指正,谢谢!

      

    文小白滴笔记~~
  • 相关阅读:
    SQL Server中的Merge关键字
    详解公用表表达式(CTE)
    SQL Server优化50法
    Chrome下的脚本管理器
    初步设计了一下视频工具合集的界面
    迅雷的剪贴板冲突好强大
    在C#中用MediaInfo获取视频或音频的属性
    用Command模式简单的实现Undo&Redo功能
    用DoddleReport快速生成报表
    移动支付时代早日来临吧
  • 原文地址:https://www.cnblogs.com/lwl0812/p/5246884.html
Copyright © 2011-2022 走看看