首页 > PHP资讯 > HTML5培训技术 > 用Gruntjs提高生产力(一)

用Gruntjs提高生产力(一)

HTML5培训技术
gruntjs是一个基于nodejs的自动化工具,只要熟悉nodejs或者又一定js经验就可以熟练应用。
 
 
 
1. 安装
 
 
 
a. 保证已安装了nodejs,并带有npm
 
 
 
b.安装客户端命令行工具,grunt 主页都有详细步骤,注意的是安装命令行工具而不是服务器版本。
 
1
npm  install –g grunt-cli
  安装完成后已经有了grunt,压缩css,js合并文件换需要grunt的插件,grunt只是一个平台,完成各种任务又对应的插件。Grunt的插件十分丰富目前又380个已帮助我们完成工作中的各种任务。
 
c. grunt插件中名字中有contrib的为官方插件,其他的为第三方插件。
 
 
 
2.进入工程目录
 
 
 
 
 
安装插件有两种方式
 
 
 
a.在工程目录中创建一个package.json文件
 
 
 
列出依赖的插件与对应版本即可
 
在命令行中进入该目录,执行
 
 
 
npm install
  
 
b.使用命令行工具
 
 
 
npm install grunt-contrib-watch –save-dev
 
 
3.创建gruntjs工程文件
 
 
 
a.gruntjs支持两种语言创建工程文件,可以使用gruntfile.js或者gruntfile.coffee
 
b.grunt工程文件遵守nodejs模块,主体结构为
 
 
 
 
module.exports = function(grunt) {
  //ant project
  grunt.initConfig({
    //task
    clean: {
        //target    
       a: ['<%=temp%>']
    },
     b: ['<%=temp%>']
    },
  })
)}
  
 
c. 获取工程中要使用的插件
 
 
 
 
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-includes');
d.注册任务
 
 
grunt.registerTask('build', ['clean', 'uglify', 'cssmin', 'includes', 'copy', 'clean']);
grunt.registerTask('default', ['build']);
在命令行中执行grunt 就会使用默认任务
 
要使用某个任务只用grunt taskname 如
 
 
grunt watch
 
 
 
 
一个完整的gruntjs工程文件(来自项目)
 
 
module.exports = function(grunt) {
 
    var rt ='src-dev/',
        indexDir = rt + 'index/',
        tempDir = rt + 'temp/';
 
    console.log(grunt.option('keys'));
 
    grunt.file.exists(tempDir) && grunt.file.delete(tempDir);
    grunt.file.mkdir(tempDir);
 
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        rt : rt,
        temp: tempDir,
        index : indexDir,
        clean: {
            build: ['<%=temp%>']
        },
        jsdoc : {
            dist : {
                src : '<%=index%>doc.js',
                options : {
                    destination : '<%=rt%>../out/'
                }
            }
        },
        cssmin: {
            //debug : true,
            combine: {
                files: {
                    '<%=temp%>c.min.css': ['<%=rt%>common/reset.css', '<%=index%>c.css']
                }
            }
        },
        includes : {
            files: {
                //debug: true,
                src: ['<%=rt%>**/*. '],
                dest: '<%=temp%>',
                cwd: '.',
                flatten: true,
                options: {
                    banner: ''
                }
            }
        },
        watch : {
            files : ['<%=index%>j.js','<%=index%>*.html' ,'<%=index%>c.css'],
            tasks : ['clean', 'uglify', 'cssmin', 'includes', 'copy', 'clean'],
            //debug : true,
            options: {
                livereload: true
            }
        },
        uglify: {
            dist: {
                files: {
                    '<%=temp%>j.js': ['<%=index%>*.js']
                }
            }
        },
        copy: {
            main: {
 
                files: [
                    {
                        flatten: true,
                        expand: true,
                        filter: 'isFile',
                        src: ['<%=temp%>index.html'],
                        dest: '<%=rt%>../src/'
                    },
                    //{src: ['<%=temp%>doc/**'], dest: '<%=temp%>../'},
                ]
            }
        }
 
    });
 
 
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-includes');
     grunt.loadNpmTasks('grunt-devtools');
    grunt.registerTask('build', ['clean', 'uglify', 'cssmin', 'includes', 'copy', 'clean']);
    grunt.registerTask('default', ['build']);
 
};
 

HTML5培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持30不支持0