资讯专栏INFORMATION COLUMN

gulp——用自动化构建工具增强你的工作流程

geekidentity / 3059人阅读

摘要:概念之前有写了,现在重新写感觉二者最终结果虽说相差无几,但是侧重点还是有所不同更偏向于工程化,侧重于项目的整个流程控制,你可以二者结合,也可以分开取舍都有利于前端项目的工程化构建安装全局安装作为项目的开发依赖安装在项目根目录下创建一

gulp概念
之前有写了webpack, 现在重新写gulp感觉二者最终结果虽说相差无几,但是侧重点还是有所不同
webpack更偏向于工程化,gulp侧重于项目的整个流程控制,你可以二者结合,也可以分开取舍 都有利于前端项目的工程化构建

安装
1、全局安装

  $ npm install -g gulp 

2、作为项目的开发依赖(devDependencies)安装:

  $ npm install --save-dev gulp

3、 在项目根目录下创建一个名为 gulpfile.js 的文件:

   var gulp = require("gulp");
   gulp.task("default", function() {
     // 将你的默认的任务代码放在这
   });

4、 运行 gulp:

   $ gulp

api
(1) gulp.src()

gulp.src("client/js/**/*.js") // 匹配 "client/js/somedir/somefile.js" 并且将 `base` 解析为 `client/js/`
  .pipe(minify())
  .pipe(gulp.dest("build"));  // 写入 "build/somedir/somefile.js"

gulp.src("client/js/**/*.js", { base: "client" })
  .pipe(minify())
  .pipe(gulp.dest("build"));  // 写入 "build/js/somedir/somefile.js"

(2) gulp.task()

其实gulp就是不断起一些任务函数,来运行你的项目
gulp.task("copyplugin",function(){
    gulp.src("./src/plugin/**/*")
    .pipe(gulp.dest("./dev/plugin"))
 })

 gulp.task("packscss",function(){
    gulp.src("./src/styles/app.scss")
    .pipe(sass().on("error",sass.logError))
    .pipe(gulp.dest("./dev/styles"))
 })
....

(3) gulp.watch()

 用来接听任务函数,把要接听的任务传入 启动的时候 会根据传入的任务进行执行,当然,不会按顺序
 gulp.task("watch",function(){
    gulp.watch("./src/*.html",["copyhtml"])
    gulp.watch("./src/images/**/*",["copyimg"])
    gulp.watch("./src/styles/**/*.scss",["packscss"])
 }     

(4) 当你想直接gulp启动项目的话,会使用

 gulp.task("default",["webserver","copyhtml","copyimg","copyplugin","packscss","packjs","watch"],
 function(){
    console.log("DONE")
})

其实gulp常用的就是插件,下面介绍一下项目中常用的插件,从而帮你更高效的构建项目
(1) 启动服务插件 npm i gulp-webserver -D

配置:
   引入gulp
   var gulp = require("gulp")
   
   var webserver = require("gulp-webserver")
   
   gulp.task("webserver",function(){
       gulp.src("./dev")     //编译后的根目录
       .pipe(webserver({
           host : "localhost",
           port : 4000,
           directoryListing : {   //启动项目显示目录
               enable : true,
               path : "./dev"
           },
           livereload : true
       }))
   })

(2) 编译sass npm i gulp-sass node-sass -D

var sass = require("gulp-sass")

gulp.task("packscss",function(){
   gulp.src("./src/styles/app.scss")
   .pipe(sass().on("error",sass.logError))
   .pipe(gulp.dest("./dev/styles"))
   console.log("sass编译啦")
})

(3) 编译commenjs实现模块化开发 npm i gulp-webpack -D

var webpack = require("gulp-webpack")

   gulp.task("packjs",function(){
       gulp.src("./src/scripts/app.js")
       .pipe(webpack({
           output : {
               filename : "app.js"  //输出文件为 name.js
           },
           module : {        
               loaders :[      //加载器
                   {
                       test : /.js$/,    //指定加载文件的类型
                       loader : "imports-loader",  //用imports-loader解析
                       exclude : "./node_modules"  //排除不需要编译的js文件
                   }
               ]
           }
       }))
       .pipe(gulp.dest("./dev/scripts"))
   })

(4) 解析浏览器不识别的require npm i imports-loader -D

       
  直接 $ gulp 即可
       bogon:guang_m macbook$ npm i imports-loader -D
       guang_m@1.0.0 /Users/macbook/Desktop/learning/third/guang_m
       └─┬ imports-loader@0.7.1 
         ├── loader-utils@1.1.0 
         └── source-map@0.5.7 
       
       npm WARN guang_m@1.0.0 No description
       npm WARN guang_m@1.0.0 No repository field.
       bogon:guang_m macbook$ gulp
       [15:01:40] Using gulpfile ~/Desktop/learning/third/guang_m/gulpfile.js
       [15:01:40] Starting "webserver"...
       [15:01:40] Webserver started at http://localhost:4000
       [15:01:40] Finished "webserver" after 21 ms
       [15:01:40] Starting "packscss"...

(5) 解析多个js文件 npm i vinyl-named -D

    gulp.src("./src/scripts/app.js")
    .pipe(name())
     .pipe(webpack({
       output: {
         filename: "[name].js"
       },
       module: {
         loaders: [
           {
             test: /.js$/,
             loader: "imports-loader",
             exclude: "./node_modules"
           }
         ]
       }

(6) 下载yo3 框架,专注于移动端的scss npm i yo3 -D

在node_modules中找到yo3 复制style到项目src中 
习惯性的在style中创建app.scss 用来import一些需要的文件
,再在usage中创建模块scss文件index.scss显示页面样式
   
   .m-index{
       height: 100%;
       @include flexbox();
       @include flex-direction(column);
       header{
           height: .44rem;
           background: #00b38a;
       }
       section{
           background: #fff;
           @include flex();
       }
       footer{
           height:.44rem;
           background: #f6f6f6;
   
       }
   }   

(7) 加载字符串模板 npm i string-loader -D

    loaders : [
       {
           test : /.js$/,
           loader : "imports-loader",
           exclude : "./node_modules"
       },
       {
           test : /.string$/,
           loader : "string-loader"
       }
   ]    

好了 ,常用就这些了 如果有新的知识点后续还会补充.....

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92032.html

相关文章

  • gulp入门

    摘要:通过输入文件流,将文件写入硬盘,并输出所有数据,能继续向下游,所以文件流可以继续被处理并被写入到其他地方。如果写入文件夹不存在,就会创建它。第二个参数,当前任务依赖的任务列表,依赖任务在当前任务运行之前完成。 gulp 简介 用自动化构建工具增强你的工作流程。 通过代码优于配置的策略,Gulp 让简单的任务简单,复杂的任务可管理。 利用 Node.js 流的威力,你可以快速构建项目并...

    kycool 评论0 收藏0
  • php工程狮感知的前端工作流程

    摘要:在这种背景下,诞生了很多工具很多前端工作流程。目前我们很多时候常说的前端工程师,其实主要指的就是其工程师。所以就是来解决这些问题的最后至此前端的一个工作结构介绍至此结束。 这个时代不懂点前端知识,真的没有办法生存。就算不会写,也得了解它的原理吧! 最近做了一些总结,之前都是迷迷糊糊,搞不清楚前端之前的相关定位。好好梳理了一下。错误之处请各位指正。 本文主要说的是 JavaScript ...

    binaryTree 评论0 收藏0
  • gulp构建工具工作

    摘要:先前学习了但是总是感觉略显复杂,并且现在很多公司工作流用的比较多,因此就入的坑来踩一踩,技多不压身,霍霍霍。高效利用强大的工作流,快速的构建项目并减少频繁的操作。易学通过最少的,掌握毫不费力,构建工作尽在掌握如同一系列流管道。 先前学习了webpack,但是总是感觉webpack略显复杂,并且现在很多公司gulp工作流用的比较多,因此就入gulp的坑来踩一踩,技多不压身,霍霍霍...。...

    enrecul101 评论0 收藏0
  • Electron 打造 Win/Mac 应,从「代码」到可下载的「安装包」,可能比你想得麻烦一

    摘要:三配置环节目的一是为之后的环节初始化工作流参数,二是准备好应用文件夹内容即要打包的目标文件夹做的事解析命令行参数,初始化工作参数,填充配置文件,把配置文件和相关依赖文件导入到文件夹内合适的 首发于酷家乐前端博客,作者@摘星(segmentfault @StinsonZhao) 我们能从很多地方学习到怎么起一个 Electron 项目,有些还会介绍怎么打包或构建你的代码,但距离「真正地...

    LdhAndroid 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<