zoukankan      html  css  js  c++  java
  • gulp自动化构建工具

    gulp    自动化构建工具,实时监控、代码合并、压缩...

       http://www.gulpjs.com.cn/     中文网

       http://gulpjs.com/plugins/     英文网 ,插件      

    本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp。不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情。那就直接开始吧。

    第一步:安装Node

    首先,最基本也最重要的是,我们需要搭建node环境。访问 http://nodejs.org ,然后点击大大的绿色的 install 按钮,下载完成后直接运行程序,就一切准备就绪。 npm 会随着安装包一起安装,稍后会用到它。

    第二步:使用命令行

    也许现在你还不是很了解什么是命令行——OSX中的终端(Terminal),windows中的命令提示符(Command Prompt),但很快你就会知道。它看起来没那么简单,但一旦掌握了它的窍门,就可以很方便的执行很多命令行程序,比如Sass,Yeoman和Git等,这些都是非常有用的工具。

    如果你很熟悉命令行,直接跳到步骤四。

    为了确保Node已经正确安装,我们执行几个简单的命令。

    node -v
    

    回车(Enter),如果正确安装的话,你会看到所安装的Node的版本号,接下来看看npm。

    npm -v
    

    这同样能得到npm的版本号。

    如果这两行命令没有得到返回,可能node就没有安装正确,尝试重启下命令行工具,如果还不行的话,只能回到第一步进行重装。

    第三步:定位到项目

    找到你的文件夹打开它,按住shift+鼠标右键 ,选择“在此处打开命令窗口”,当然也可以是命令cd  定位文件夹

    第四步:安装gulp

    我们已经知道如何使用命令行,现在尝试点新的东西,认识npm然后安装gulp。

    NPM是基于命令行的node包管理工具,它可以将node的程序模块安装到项目中,在它的 官网 中可以查看和搜索所有可用的程序模块。

    sudo npm install -g gulp   // 等同于 npm install --global gulp
    
    1. sudo是以管理员身份执行命令,一般会要求输入电脑密码,可以省略sudo
    2. npm是安装node模块的工具,执行install命令

    3. -g表示在全局环境安装,以便任何项目都能使用它

    4. 最后,gulp是将要安装的node模块的名字

    运行时注意查看命令行有没有错误信息,安装完成后,你可以使用下面的命令查看gulp的版本号以确保gulp已经被正确安装。

    gulp -v
    

    接下来,我们需要将gulp安装到项目本地

    npm install —-save-dev gulp
    

    这里,我们使用 —-save-dev 来更新package.json文件,更新 devDependencies值,以表明项目需要依赖gulp。

    Dependencies 可以向其他参与项目的人指明项目在开发环境和生产环境中的node模块依懒关系,想要更加深入的了解它可以看看 package.json文档 。

    第五步:新建Gulpfile文件,运行gulp

    安装好gulp后我们需要告诉它要为我们执行哪些任务,首先,我们自己需要弄清楚项目需要哪些任务。

    • 检查Javascript
    • 编译Sass(或Less之类的)文件
    • 合并Javascript
    • 压缩并重命名合并后的Javascript

    安装依赖

     npm init       一路enter ,会在当前目录生成一个package.json文件夹(模块的配置文件)

    npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename --save-dev 
    

    1 提醒下,如果以上命令提示权限错误,需要添加 sudo 再次尝试。

    --save-dev  :你安装的包会出现在你开发(dev)的依赖(Dependencies)里

      因为gulp只是我们开发阶段所依赖的东西,并不是我们项目所用的功能性的东西,所以放在开发的依赖项里面

    新建gulpfile文件

    现在,组件都安装完毕,我们需要新建gulpfile文件以指定gulp需要为我们完成什么任务。

       gulp.task(name,fn)      - 定义任务,第一个参数是任务名,第二个参数是任务内容。

       gulp.src(path)      - 选择文件,传入参数是文件路径。

         pipe()                        - 管道,你可以暂时将 pipe 理解为将操作加入执行队列

       gulp.dest(path)           - 输出文件

    gulp只有五个方法: task , run , watch , src ,和 dest ,在项目根目录新建一个js文件并命名为 gulpfile.js (必须是这个名字),把下面的代码粘贴进去:

    gulpfile.js

    // 引入 gulp
    var gulp = require('gulp'); 
    
    // 引入组件
    var jshint = require('gulp-jshint');    // js检查
    var sass = require('gulp-sass');     // sass自动化
    var concat = require('gulp-concat');  //文件合并
    var uglify = require('gulp-uglify');  //js混淆
    var rename = require('gulp-rename');  //重命名
    
    // 检查脚本
    gulp.task('lint', function() {
        gulp.src('./js/*.js')
            .pipe(jshint())
            .pipe(jshint.reporter('default'));
    });
    
    // 编译Sass
    gulp.task('sass', function() {
        gulp.src('./scss/*.scss')
            .pipe(sass())
            .pipe(gulp.dest('./css'));
    });
    
    // 合并,压缩文件
    gulp.task('scripts', function() {
        gulp.src('./js/*.js')            //文件路径
            .pipe(concat('all.js'))   //合并文件 赋予新名字
            .pipe(gulp.dest('./dist'))  //输出
            .pipe(rename('all.min.js')) //重命名
            .pipe(uglify())        //js 压缩
            .pipe(gulp.dest('./dist'));  //输出
    });
    
    // 默认任务
    gulp.task('default', function(){
        gulp.run('lint', 'sass', 'scripts');
    
        // 监听文件变化
        gulp.watch('./js/*.js', function(){
            gulp.run('lint', 'sass', 'scripts');
        });
    });
    //最后的 监听还可以更简单的写
     gulp.task('default',function(){
      
      gulp.watch('
    ./js/*.js',['lint']);
       
    gulp.watch('./scss/*.scss',['sass']);
        
    gulp.watch('./js/*.js',['script']);
    });
    //如果不监听
      
      gulp.task('default',['lint','sass','script'])

    现在,分段解释下这段代码。

    引入组件

    var gulp = require('gulp'); 
    
    var jshint = require('gulp-jshint'); //js 代码检查,gulp-jslint 也可以
    var sass = require('gulp-sass');   //sass 自动编译
    var less = require('gulp-less'); //less 自动编译
    var minifyCss = require('gulp-minify-css'); //css压缩 var concat = require('gulp-concat'); // 代码合并 var uglify = require('gulp-uglify'); // js 混淆 、压缩 var rename = require('gulp-rename'); // 重命名

    这一步,我们引入了核心的gulp和其他依赖组件,接下来,分开创建lint, sass, scripts 和 default这四个不同的任务。

    Lint任务

    gulp.task('lint', function() {
        gulp.src('./js/*.js')
            .pipe(jshint())
            .pipe(jshint.reporter('default'));
    });
    

    Link任务会检查 js/ 目录下得js文件有没有报错或警告。

    Sass任务

    gulp.task('sass', function() {
        gulp.src('./scss/*.scss')
            .pipe(sass())
            .pipe(gulp.dest('./css'));
    });
    

    Sass任务会编译 scss/ 目录下的scss文件,并把编译完成的css文件保存到 /css目录中。

    Scripts 任务

    gulp.task('scripts', function() {
        gulp.src('./js/*.js')
            .pipe(concat('all.js'))
            .pipe(gulp.dest('./dist'))
            .pipe(rename('all.min.js'))
            .pipe(uglify())
            .pipe(gulp.dest('./dist'));
    });

    注意:当遇到js 压缩出错,uglify.js ,使用下面方法

      .pipe(uglify().on('error',function(e){
        console.log(e)
      }))

    
    
    合并后的文件 第544行有问题

    scripts任务会合并 js/ 目录下得所有得js文件并输出到 dist/ 目录,然后gulp会重命名、压缩合并的文件,也输出到 dist/ 目录。

    default任务

    gulp.task('default', function(){
        gulp.run('lint', 'sass', 'scripts');
        gulp.watch('./js/*.js', function(){
            gulp.run('lint', 'sass', 'scripts');
        });
    });
    

    这时,我们创建了一个基于其他任务的default任务。使用 .run() 方法关联和运行我们上面定义的任务,使用 .watch() 方法去监听指定目录的文件变化,当有文件变化时,会运行回调定义的其他任务。

    现在,回到命令行,可以直接运行gulp任务了。

  • 相关阅读:
    docker cannot stop container问题解决
    Could not get lock /var/lib/dpkg/lock-frontend解决
    SpringBoot解决跨域请求拦截
    Mybatis插件开发
    kill 命令在Java应用中使用注意事项
    SpringBoot处理全局统一异常
    docker上传自己的镜像
    创建swagger的springboot-stater,并在spring cloud zuul网关中引入
    Docker+Jenkins+Git发布SpringBoot应用
    git使用.gitignore文件忽略相关文件上传
  • 原文地址:https://www.cnblogs.com/NTWang/p/6209704.html
Copyright © 2011-2022 走看看