`
liuguofeng
  • 浏览: 450428 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

 
阅读更多

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-1

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配置文件。

分享到:
评论

相关推荐

    Grunt入门练习Demo

    ### 常用Grunt插件 在本Demo中,我们可能会使用到以下插件: 1. `grunt-contrib-concat`:用于合并多个文件为一个文件。 2. `grunt-contrib-uglify`:JavaScript代码压缩。 3. `grunt-contrib-watch`:监听文件...

    grunt-wp-boilerplate, WordPress插件模板的Grunt初始化模板.zip

    grunt-wp-boilerplate, WordPress插件模板的Grunt初始化模板 grunt-wp-boilerplate在插件的基础上创建一个WordPress插件,基于 WordPress插件的模板。安装如果你还没有这样做,请安装 grunt-init:npm install -g ...

    grunt-wordpress, 用于将内容发布到WordPress的Grunt插件.zip

    grunt-wordpress, 用于将内容发布到WordPress的Grunt插件 grunt使用 WordPress 发布内容到WordPress的Grunt插件。支持这里项目通过捐赠在Gratipay上。正在启动Grunt的wordpress就像任何其他的插件插件一样工作。 ...

    grunt-purifycss, 使用grunt构建工具删除未使用的CSS.zip

    grunt-purifycss, 使用grunt构建工具删除未使用的CSS purifycss使用 PurifyCSS 清除不必要的CSS正在启动这个插件需要 Grunt ~0.4.5If之前,请务必先查看一下如何创建 Gruntfile插件,以及安装和使用Grunt插件。...

    使用grunt进行前端工程化构建

    本书《Automate with Grunt》深入浅出地介绍了如何利用Grunt来优化前端工作流程,不仅适合初学者入门,也能为资深开发者提供实用的技巧。 #### 二、Grunt简介 Grunt是一款基于Node.js的自动化构建工具,它通过定义...

    grunt-cli模块

    虽然Grunt通常会用到`grunt-contrib-less`插件来处理LESS,但直接使用`lessc`也可以进行简单的编译。例如: ```bash lessc input.less output.css ``` 这将把`input.less`转换成`output.css`。 **node_modules...

    [转]学会使用grunt打包前端代码

    使用Grunt插件** Grunt拥有大量的社区插件,可以处理各种前端开发需求。例如,为了合并和压缩JS文件,你可以在`package.json`中添加以下依赖: ```json "devDependencies": { "grunt": "^1.4.1", "grunt-...

    grunt-rollup:用于汇总的 Grunt 插件 - 下一代 ES6 模块打包器

    咕噜咕噜 用于Grunt 插件 - 下一代 ES6 模块打包器入门这个插件需要 Grunt &gt;=0.4.0和 node &gt;=8.6.0 。 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您...

    Grunt安装与使用

    1. 加载插件:在Gruntfile.js中,使用`grunt.loadNpmTasks('plugin-name')`加载你需要的任务插件。 2. 配置任务:在配置对象中,定义任务的属性和选项,如源文件和目标文件路径。 3. 注册任务:使用`grunt....

    安装elasticsearch-head插件需要的grunt二进制安装包 grunt.tar

    安装elasticsearch-head插件需要的grunt二进制安装包

    grunt-bower-task, 面向 Bower的Grunt插件.zip

    grunt-bower-task, 面向 Bower的Grunt插件 grunt-bower-task 安装 Bower 软件包明智地安装。正在启动注意:如果你以前没有使用过 grunt,那么一定要检查一下 guide指南 guide 。 请注意,这里插件仅使用 grunt 的

    grunt-msbuild, 用于MSBuild和XBuild的Grunt插件.zip

    grunt-msbuild, 用于MSBuild和XBuild的Grunt插件 grunt-msbuild使用Grunt生成带有MSBuild和XBuild的项目正在启动这个插件需要 Grunt ~0.4.0 。 换句话说,它应该在 0.4.0或者更高版本上工作。If之前,请务必先查看...

    node.js前端部署和打包插件grunt-bbb

    node.js前端部署和打包插件grunt-bbb,如果你使用了require.js那你选择他作为前端部署工具就对了,示例:https://github.com/backbone-boilerplate/grunt-bbb,解压到C:\Users\Administrator\AppData\Roaming\npm\ ...

    grunt-electron-installer, 为电子应用构建 Windows 安装程序的插件插件.zip

    grunt-electron-installer, 为电子应用构建 Windows 安装程序的插件插件 电子安装程序Grunt插件 Grunt插件,为电子应用程序构建 Windows 安装程序,使用 Squirrel 。安装npm install --save-dev grunt-electron-...

    grunt-doiuse

    如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此插件: npm install grunt-doiuse --save-dev 安装插件后,可以使用以下 ...

    grunt项目构建样例

    - 对于大型项目,考虑使用`grunt-load-config`或`grunt-include-source`等插件来更好地组织和管理配置。 - 结合其他工具如`jshint`进行代码质量检查,`autoprefixer`自动添加CSS前缀等,提升项目质量。 7. **持续...

    Grunt 离线安装包

    总结来说,这个“Grunt 离线安装包”提供了一种在无网络环境下使用 Grunt 的解决方案,包含了 Grunt 本身及其依赖,方便开发者在本地进行任务配置和执行,提高了开发效率和一致性。在实际使用中,配合合理的项目结构...

    grunt.js cookbook

    ### Grunt.js Cookbook知识点概述 ...通过学习本书,读者不仅能够掌握Grunt.js的基本使用方法,还能深入了解如何利用Grunt.js来优化开发流程、提高生产力。无论是初学者还是有一定经验的开发者,都能够从中获益匪浅。

    grunt-jenkins-build-info:Grunt插件,可将Jenkins构建信息(包括源代码控制信息)添加到已定义的json文件(程序包,bower等)中

    如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此插件: npm install grunt-jenkins-build-info --save-dev 安装插件后,可以...

Global site tag (gtag.js) - Google Analytics