3、GruntJs做JavaScript代码校验、自动化

首先grunt是JavaScript的脚手架,先node官网安装node;

安装好node之后,可以使用node、npm功能;

grunt要了解有:grunt cli、task runner、plugins三个。

1. GruntJS CLI

全局安装 grunt-cli 包,这样在任何目录下都可以调用grunt命令。

npm install grunt-cli -g

2. GruntJS Task Runner

新建项目文件夹b,进入项目路径

mkdir b
cd b

创建package.json文件,设置入口js

npm init
entry point: (index.js) 

删除没用的 mainscriptsauthorlicense,剩下package.json

{
  "name": "myname",
  "version": "1.0.0",
  "description": ""
}

安装grunt到本地,从而package.json更新(核心步骤)

npm install grunt --save-dev
{
  "name": "myname",
  "version": "1.0.0",
  "description": "",
  "devDependencies": {
    "grunt": "^1.0.1"
  }
}

 

3. Grunt Plugins插件

① package.json添加内容:

{
  "name": "myname",
  "version": "1.0.0",
  "description": "",
  "devDependencies": {
    "grunt": "^1.0.1",
    "grunt-contrib-concat": "^0.3.0",
    "grunt-contrib-csslint": "^1.0.0",
    "grunt-contrib-jshint": "^0.6.5",
    "grunt-contrib-uglify": "~0.2.1",
    "grunt-contrib-watch": "^1.0.0"
  }
}

插件批量安装(如果手动单个添加:npm install grunt-contrib-concat --save-dev)

npm install

接下来手动创建以下内容——

 

② 新建Gruntfile.js

module.exports = function(grunt){
        grunt.initConfig({
            //3 压缩JS文件的
            uglify: {
                build: {
                src: 'des/concat1.js',
                dest: 'des/libs.min.js'
                }
            },
            //2 连接JS文件
            concat: {
                options: {
                    separator: ';'
                },
                dist: {
                    src: ['src/a.js', 'src/b.js'],
                    dest: 'des/concat1.js'
                }
            },
            //1 js:检查代码中糟糕的部分,大家都用
            jshint: {
                build: [ 'Gruntfile.js','src/*.js'],
                options: {
                    jshintrc:'.jshintrc'
                }
            },
            //4 自动刷新
            watch:{
                build: {
                    files: ['src/*.js', 'src/*.css'],
                    tasks: ['jshint', 'uglify'],
                    options: { spawn: false}
                }
            }
        });

        grunt.loadNpmTasks('grunt-contrib-uglify');
        grunt.loadNpmTasks('grunt-contrib-jshint');
        grunt.loadNpmTasks('grunt-contrib-watch');
        grunt.loadNpmTasks('grunt-contrib-concat');

        //1检查语法 2连接 3压缩 4自动刷新
        grunt.registerTask('default', ['jshint','concat','uglify','watch']);
};

③ 新建过滤文件.jshintrc、.csslintrc

{
    "boss": false,
    "curly": true,
    "eqeqeq": true,
    "eqnull": true,
    "expr": true,
    "immed": true,
    "newcap": true,
    "noempty": true,
    "noarg": true,
    "undef": true,
    "regexp": true,

    "browser": true,
    "devel": true,
    "node": true
}
View Code
{
    "adjoining-classes":false,
    "box-sizing": false,
    "box-model": false,
    "compatible-vendor-prefixes": false,
    "floats": false,
    "font-sizes": false,
    "gradients": false,
    "important": false,
    "known-properties": false,
    "outline-none" : false,
    "qualified-headings": false,
    "regex-selectors": false,
    "shorthand": false,
    "text-indent": false,
    "unique-headings": false,
    "universal-selector": false,
    "unqualified-attributes": false
}
View Code

新建src文件夹、des文件夹

 

④ src文件夹中新建测试用的js文件 a.js b.js,随便写点东西测试

var a=[];
var b=123;
var c;
var sadf;
//现在跑起来
grunt

生成连接文件、压缩文件,最终效果截图。(名字可以随便取)

OK!

 

参考资料:

segment社区:      https://segmentfault.com/a/1190000000353114

叶小钗大神:       http://www.cnblogs.com/yexiaochai/p/3603389.html

插件汇总:     http://www.gruntjs.net/plugins

grunt理论介绍:    http://www.tuicool.com/articles/FfMBfq

 http://www.cnblogs.com/wangfupeng1988/p/4561993.html

posted @ 2016-06-13 13:01  miaomiaotab  阅读(174)  评论(0编辑  收藏  举报