当然,gulp不仅仅能转换Sass,这里会提到如下转换:

  1. jsx转换成常规的JavaScript(说到jsx,玩过react的同学应该是知道的)
  2. es6转换为es5
  3. Less,Sass转换为CSS
  首先,新建一个文件夹,然后继续和之前的方法一样,在文件夹里npm init , npm install --save-dev gulp
  安装好了gulp之后,我们还需要安装几个用来代码转换的插件,对应关系如下:
jsx代码转换   npm install gulp-react
es6代码转换 
 npm install gulp-babel , npm install babel-preset-es2015   
   (其实es6也叫es2015)
less代码转换 npm install gulp-less
sass代码转换   npm install gulp-sass
 
tips:如果npm装的很慢或者卡进度了,可以换用cnpm.
 
 
首先是jsx和es6的转换:
好的,准备工作结束,我们先来建一个src目录,在目录下新建一个js文件,写入一些jsx和es6的代码:
 
  1. 'use strict';
  2. const react = require('react');
  3. class MYTEST extends react.Component{
  4. constructor(props){
  5. //noinspection JSAnnotator
  6. super(props);
  7. }
  8. render(){
  9. return (
  10. <div>gulp react ,jsx to js and es6 to es5.</div>
  11. )
  12. }
  13. }

接下来在项目根目录下来新建出我们的主角——gulpfile.js,写入代码如下:

  1. var gulp = require('gulp');
  2. var react = require('gulp-react');
  3. var babel = require('gulp-babel');
  4. var less = require('gulp-less');
  5. var sass = require('gulp-sass');
  6. gulp.task("default",function () {
  7. return gulp.src('./src/jsxAndEs6.js') //要转换的文件
  8. .pipe(react())  //转换jsx代码
  9. .pipe(babel({
  10. presets:['babel-preset-es2015']    //插件数组
  11. }))  //es6转es5
  12. .pipe(gulp.dest('./dest'));//转换后的文件输出到这里
  13. })

注意:这里引入库的时候,并没有引入我们用npm安装的babel-preset-es2015,因为他是作为babel进行转换时的一个插件参数存在的,直接在babel中调用即可

接下来运行gulp指令,会发现目录的dest目录下,多了一个我们转换后的js文件,打开转换后的代码,惨不忍睹啊:

到这里呢,jsx和es6的转换就搞定了。

接下来是Less和Sass:

首先在src目录下新建一个less文件,代码如下:

  1. @color:#aaa;
  2. .container{
  3. color:@color;
  4. }

再新建一个sass文件,代码如下:

  1. $fontStack:    Helvetica, sans-serif;
  2. $primaryColor: #333;
  3. body {
  4. font-family: $fontStack;
  5. color: $primaryColor;
  6. }

接下来回到我们的gulpfile.js,添加转换sass和less的task:

  1. var gulp = require('gulp');
  2. var react = require('gulp-react');
  3. var babel = require('gulp-babel');
  4. var less = require('gulp-less');
  5. var sass = require('gulp-sass');
  6. gulp.task('less',function () {
  7. return gulp.src('./src/Less_style.less')
  8. .pipe(less())
  9. .pipe(gulp.dest('./dest'));
  10. });
  11. gulp.task('sass',function () {
  12. return gulp.src('./src/Sass_style.scss')
  13. .pipe(sass())
  14. .pipe(gulp.dest('./dest'))
  15. })
  16. gulp.task("default",['less','sass'],function () {
  17. return gulp.src('./src/jsxAndEs6.js') //要转换的文件
  18. .pipe(react())  //转换jsx代码
  19. .pipe(babel({
  20. presets:['babel-preset-es2015']    //插件数组
  21. }))  //es6转es5
  22. .pipe(gulp.dest('./dest'));//转换后的文件输出到这里
  23. });

注意,写了新的task之后,一定要引入到default中哦,不然不会执行的。

接下来在命令行执行gulp指令,会发现dest文件夹下多出了编译后的css文件,效果如下:

大功告成~~

gulp入坑系列(4)——gulp的代码转换的更多相关文章

  1. gulp入坑系列(2)——初试JS代码合并与压缩

    在上一篇里成功安装了gulp到项目中,现在来测试一下gulp的合并与压缩功能 gulp入坑系列(1)--安装gulp(传送门):http://www.cnblogs.com/YuuyaRin/p/61 ...

  2. gulp入坑系列(1)——安装gulp

    前言   好吧,我承认我是为了搞定Sass编译CSS文件的问题,迷一样的着手入gulp的坑,sass和gulp的爬坑历程大概会一起更新.然后感觉这里windows和mac的流程差不多,不过mac的通常 ...

  3. gulp入坑系列(3)——创建多个gulp.task

    继续gulp的爬坑路,在准备get更多gulp的具体操作之前,先来明确一下在gulp中创建和使用多个task任务的情况. gulp所要做的操作都写在gulp.task()中,系统有一个默认的defau ...

  4. 3-STM32带你入坑系列(自己封装点亮一个灯的库--Keil)

    2-STM32带你入坑系列(点亮一个灯--Keil) 首先建一个stm32f103x.h的文件,然后 #include "stm32f103x.h" 还记得上一节 现在呢就是做一个 ...

  5. 2-STM32带你入坑系列(点亮一个灯--Keil)

    1-STM32带你入坑系列(STM32介绍) 首先是安装软件 这一节用Kei来实现,需要安装MDK4.7这个软件,怎么安装,自己百度哈.都学习32的人了,不会连个软件都不会安装吧....还是那句话 没 ...

  6. 1-STM32带你入坑系列(STM32介绍)

    由于自己的物联网开发板上的单片机是用的STM32,但是有些朋友没有用过,所以我将用这块开发板,带着大家入门STM32 先介绍一下STM32,我是在大三下学期的时候开始接触STM32,当时是想做一个小车 ...

  7. 入坑第二式 golang入坑系列

    史前必读: 这是入坑系列的第二式,如果错过了第一式,可以去gitbook( https://andy-zhangtao.gitbooks.io/golang/content/ )点个回放,看个重播.因 ...

  8. Docker入坑系列(二)

    Docker入坑系列(二) 上一篇我们为Docker创造了一个良好的生活环境,这一篇我们就开始让Docker活起来. 安装Docker ok,原文地址在这里. 当然,我只是自己翻译了一下而已- -跟着 ...

  9. Docker入坑系列(一)

    Docker入坑系列(一) 引用嘛,当然是来引用别人说的东西啦. Docker 是一个开源项目,诞生于 2013 年初,它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux ...

随机推荐

  1. Ubuntu中QT使用FFmpeg的奇怪问题

    FFmpeg都已经编译安装好了,QT的程序中调用av_register_all却总是在链接阶段报错,经过长时间的摸索,发现时静态链接库的问题,网上给出的答案都只能解决部分问题,所需的全部链接库如下: ...

  2. JAVA多线程编程之生产者消费者模式

    Java中有一个BlockingQueue可以用来充当堵塞队列,下面是一个桌面搜索的设计 package net.jcip.examples; import java.io.File; import ...

  3. [原]ffmpeg编译android 硬解码支持库 libstagefright

    最近花了一天时间将ffmpeg/tools/build_stagefright执行成功,主要是交叉编译所需要的各种动态库的支持没链接上,导致各种报错,基本上网络上问到的问题我都碰到了,特此记录下来. ...

  4. [原]零基础学习在Android进行SDL开发系列文章

    [原]零基础学习SDL开发之移植SDL2.0到Android [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 [原]零基础学习SDL开发之在Android使用SDL2.0显示 ...

  5. 利用Cydia Substrate进行Android HOOK(二)

    在前面关于Substrate的介绍中我们已经讲了用Substrate hook java代码,现在我们讲下怎么用它hook native代码.hook native代码我们需要编写Substrate ...

  6. MyBatis知多少(26)调试

    这是很容易,同时与iBATIS的工作程序进行调试. iBATIS有内置的日志支持,并适用于下列日志库,并在这个顺序搜索他们. Jakarta Commons日志记录(JCL). Log4J JDK 日 ...

  7. ruby -- 问题解决(五)页面返回跳转

    今天在做页面跳转的时候,google了下页面跳转的方法, 跳转到上一个页面:redirect_to :back <%= link_to "返回" ,:back %> 这 ...

  8. DDD:四色原型中Role的 “六” 种实现方式

    背景 一个实体在不同的上下文中具备不同的职责,如:产品在“生产完成上下文”中具备的一些职责,在“质检相关上下文”中具备另外一些职责.四色原型.DIC和“UML事物模式”在不同的维度阐述了这一情况,在代 ...

  9. Tips4:把 Inspector面板转换为Debug模式

    你知道 Inspector 的调试(debug)模式吗? 当debug模式打开后, Inspector将会把游戏物体所有的属性都显示出来,包括公有(public)和私有(private)变量. 例如, ...

  10. 让服务器apache/iis/nginx支持.apk/ipa文件下载

    服务器iis支持.apk文件下载的设置 IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载. IIS服务器不能下载.apk文件的解决办法:既然.apk无法 ...