首页 > 其他分享 >常用插件的使用—grunt入门指南(下)

常用插件的使用—grunt入门指南(下)

时间:2023-06-04 18:07:26浏览次数:44  
标签:src 插件 入门 coffee 编译 grunt true

less/sass/stylus预编译

在前端工程中使用css预编译器(less/sass/stylus)用于弥补css的语言缺陷,基本上是标配了,其中less和sass用的最多,但明河最喜欢使用的是stylus,grunt官方有对应的编译插件。


这里以grunt-contrib-stylus为例。


stylus: {
             options: {
                 //指定要扫描的目录(针对@import内的路径)
                 paths: [ 'src' ],
                 //指定将图片路径转成base64数据的函数(比如配置urlfunc:"embedurl",扫描embedurl(test.png))
                 urlfunc: 'embedurl' ,
                 import: [      //  @import 'foo', 'bar/moo', 每一个.styl文件
                     'foo' ,
                     'bar/moo'
                 ]
             },
             main: {
                 files: [
                     {
                         expand: true ,
                         cwd: 'src' ,
                         src: '*.styl' ,
                         dest: 'src' ,
                         ext: '.css'
                     }
                 ]
             }
         }

上述任务将src目录下的所有.styl文件编译成.css文件。


less,sass的编译插件用法类似,配置上有差异,sass推荐使用grunt-contrib-compass。


(PS:如果你使用webstrom或idea,其实不需要grunt来处理css的预编译,IDE已经内置处理了。)


如果每次修改完都要运行命令编译次,是非常麻烦的,所以我们还需要个实时监听插件grunt-contrib-watch,后面会讲到。


当然亲也可以使用一些编译工具,比如livereload(livereload非常强大,但win平台的软件很弱)和koala。


coffeescript编译

关于coffeescript的争议非常多,上次明河还听到facebook同学关于coffeescript的批评,在阿里技术论坛里也有过争论,不管如何coffeescript的确很诱人。


coffeescript有带了编译工具,可以满足实时编译需求,就是每次运行很麻烦,结合grunt使用,可以很好的消化coffeescript的编译成本(如果你使用webstrom,可以无视编译,已经自动处理鸟。)


grunt-contrib-coffee用法举例:

coffee: {
             compile: {
                 options: {
                     //去掉匿名函数包裹
                     bare: true ,
                     //当编译多个.coffee文件成单个.js时,先合并
                     join: true ,
                     //编译.coffee文件时生成个.map文件,用于链接到coffee源码文件
                     sourceMap: true
                 },
                 files:[
                     {
                         expand: true ,
                         cwd: 'src' ,
                         src: [ '**/*.coffee' ],
                         dest: 'src' ,
                         ext: '.js'
                     }
                 ]
             }
 
         }

实时监听插件

grunt-contrib-watch非常重要,它能监测文件的修改,触发指定任务,比如less、coffee编译等。


先来看个最简单的demo:


watch: {
     options: {
         spawn: false
     },
     scripts: {
         files: [ '<%= pkg.version %>/**/*.coffee' ],
         tasks: [ 'coffee' ]
     }
}

监听源码目录下所有的.coffee文件的修改,触发coffee任务(编译coffee文件)。


spawn配置一般禁掉,设置为true时,运行任务会开启子进程处理,可能会出现不稳定的问题。

files:监听哪些文件的修改

tasks:文件修改后触发哪些任务


coffee: {
             compile: {
                 options: {
                     //去掉匿名函数包裹
                     bare: true
                 },
                 files:[
                     {
                         expand: true ,
                         cwd: '<%= pkg.version %>' ,
                         src: [ '**/*.coffee' ],
                         dest: '<%= pkg.version %>' ,
                         ext: '.js'
                     }
                 ]
             }
 
         }

grunt.registerTask( 'w' ,[ 'watch:scripts' ]);

运行grunt w后,没有报错的情况下,随便修改个coffee文件,会出现类似如下结果:


(PS:registerTask的name不能和task的名称重复,不然会出现死循环,比如这里不能grunt.registerTask(‘watch’]);)




grunt-contrib-watch拥有丰富的配置,一般采用默认配置即可,grunt-contrib-watch可以结合livereload插件使用,可以实现文件发生改变后刷新页面,这个功能很有意思。


grunt.initConfig({
   watch: {
     options: {
       livereload: true ,
     },
     css: {
       files: [ 'public/scss/*.scss' ],
       tasks: [ 'compass' ],
     },
   },
});

livereload会开启个服务器,默认端口号为35729。


在页面中引入监控脚本:


< script src = "http://localhost:35729/livereload.js" ></ script >

或者安装livereload的浏览器插件。


图片压缩工具插件

grunt-contrib-imagemin,能够快速的压缩工程内的图片,非常实用的前端工具,用法非常简单:


imagemin: {
      dynamic: {
          files: [{
              expand: true ,
              cwd: 'src/' ,
              src: [ '**/*.{png,jpg,gif}' ],
              dest: 'dist/'               
          }]
      }
  }

yuidoc文档生成插件

grunt-contrib-yuidoc:基于YUIDOC生成js API文档


yuidoc: {
    compile: {
      name: '<%= pkg.name %>' ,
      description: '<%= pkg.description %>' ,
      version: '<%= pkg.version %>' ,
      url: '<%= pkg.homepage %>' ,
      options: {
        paths: 'path/to/source/code/' ,
        themedir: 'path/to/custom/theme/' ,
        outdir: 'where/to/save/docs/'
      }
    }
  }

paths:js源码位置;

themedir:文档模板位置;

outdir:文档输出位置。


karma单测回归插件

grunt-karma:是karma的grunt插件版,webstrom内置karma回归功能。


demo:

karma: {
   unit: {
     configFile: 'karma.conf.js'
   }
}

会寻找karma.conf.j配置文件。


标签:src,插件,入门,coffee,编译,grunt,true
From: https://blog.51cto.com/u_16120380/6411380

相关文章

  • 任务配置详解—grunt入门指南
    任务配置指的是grunt.initConfig({})中的任务配置,上一篇文章我们配置了uglify(这里指任务名,而不是插件名)任务,用于压缩js文件,接单演示了任务配置的功能。这一篇教程将深入讲解任务配置的细节。多任务目标构建中有二个关键字:任务(task)和目标(target),一个任务可以包含多个任务目标。grunt.......
  • jQuery Backstretch动态设置背景图片插件
    [url]http://www.2cto.com/kf/201411/348425.html[/url]官方:[url]https://github.com/srobbin/jquery-backstretch[/url]<scriptsrc="Scripts/jquery-1.8.2.min.js"></script><scriptsrc="Scripts/jquery.backstretc......
  • Eclipse插件开发
    Eclipse插件开发之基础篇(1)插件开发的基础知识[url]http://www.360doc.com/content/12/0322/18/9210133_196714278.shtml[/url]Eclipse插件开发之基础篇(2)第一个Eclipse插件[url]http://www.360doc.com/content/12/0322/18/9210133_196715402.shtml[/u......
  • jQuery动画插件: Velocity.js
    官方:[url]http://julian.com/research/velocity/[/url]介绍:[url]http://www.w3ctech.com/topic/1403[/url]使用Velocity.js改善用户体验[url]http://www.w3ctrain.com/2015/11/15/faster-ui-animations-with-velocity-js/[/url]使用VELOCITY.JS来改善和......
  • vscode插件开发----如何向输出通道中输出信息
    插件有时候需要输出一些信息,那么如何在输出通道中显示呢?使用如下代码即可:varoutputChannel:vscode.OutputChannel;//输出通道/***输出信息到控制台上,输出通道为MyCoder*@parammessage输出的文本信息*/exportfunctionmylog(message:string){if(outputC......
  • WPF入门教程系列二十七 ——DataGrid使用示例MVVM模式(4)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一)   ......
  • vscode插件开发----获得当前打开的文件名
    采用下面代码即可:importvscode=require('vscode');//激活函数,是首先要调用的exportfunctionactivate(context:any){//注册一个命令letdisposable=vscode.commands.registerCommand('codeStat.countCurFile',function(){leteditor=vscode.window.......
  • YouCompleteMe插件安装
    Vundle安装YouCompleteMe安装YouCompleteMe对软件版本要求,编译python默认都是静态库,YouCompleteMe需要动态库ProblemsinstallingPython3with--enable-sharedexportLD_RUN_PATH=~/opt/python3.10/lib;./configure--prefix=~/opt/python3.10/--enable-sharedexpo......
  • .net 温故知新【11】:Asp.Net Core WebAPI 入门使用及介绍
    在Asp.NetCore上面由于现在前后端分离已经是趋势,所以asp.netcoreMVC用的没有那么多,主要以WebApi作为学习目标。一、创建一个WebApi项目我使用的是VS2022,.Net7版本。在创建界面有几项配置:配置Https启用Docker使用控制器启用OpenAPI支持不使用顶级语句其中配置Ht......
  • Kubescape入门
    Kubescape是一个K8sopen-source工具,提供multi-cloudK8s单层玻璃,包括风险分析、安全合规性、RBAC可视化工具和图像漏洞扫描。Kubescape在CI/CD管道的早期阶段扫描K8s集群、YAML文件和HELM图表,根据多个框架(例如NSA-CISA、MITREATT&CK®)、软件漏洞和RBAC(role-based-access-control)......