初探grunt.js

package.js

{

  "name": "ttd_v3",

  "version": "0.1.0",

  "author": "liujin",

  "devDependencies": {

    "connect-livereload": "^0.5.2",

    "grunt": "~0.4.2",

    "grunt-contrib-concat": "~0.3.0",

    "grunt-contrib-connect": "^0.7.1",

    "grunt-contrib-cssmin": "^0.11.0",

    "grunt-contrib-jshint": "~0.6.0",

    "grunt-contrib-sass": "~0.3.0",

    "grunt-contrib-uglify": "~0.3.2",

    "grunt-contrib-watch": "^0.6.1",

    "grunt-css": "~0.5.4",

    "grunt-sass": "0.6.1"

  }

}

gruntfile.js

module.exports = function(grunt) {

 

    // LiveReload的默认端口号,你也可以改成你想要的端口号

    var lrPort =35729  ;

    // 使用connect-livereload模块,生成一个与LiveReload脚本

    // <script src="http://127.0.0.1:35729/livereload.js?snipver=1" type="text/javascript"></script>

    var lrSnippet = require('connect-livereload')({ port: lrPort });

    // 使用 middleware(中间件),就必须关闭 LiveReload 的浏览器插件

    var lrMiddleware = function(connect, options) {

        return [

            // 把脚本,注入到静态文件中

            lrSnippet,

            // 静态文件服务器的路径

            connect.static(options.base),

            // 启用目录浏览(相当于IIS中的目录浏览)

            connect.directory(options.base)

        ];

    };

 

    // 项目配置(任务配置)

    grunt.initConfig({

        // 读取我们的项目配置并存储到pkg属性中

        pkg: grunt.file.readJSON('package.json'),

        // 通过connect任务,创建一个静态服务器

        connect: {

            options: {

                // 服务器端口号

                port: 8000,

                // 服务器地址(可以使用主机名localhost,也能使用IP)

                hostname: 'localhost',

                // 物理路径(默认为. 即根目录) 注:使用'.'或'..'为路径的时,可能会返回403 Forbidden. 此时将该值改为相对路径 如:/grunt/reloard。

                base: '.'

            },

            livereload: {

                options: {

                    // 通过LiveReload脚本,让页面重新加载。

                    middleware: lrMiddleware

                }

            }

        },

        // 通过watch任务,来监听文件是否有更改

        watch: {

            client: {

                // 我们不需要配置额外的任务,watch任务已经内建LiveReload浏览器刷新的代码片段。

                options: {

                    livereload: lrPort

                },

                // '**' 表示包含所有的子目录

                // '*' 表示包含所有的文件

                files: ['D:/working/TFS2010/UISolution/website/_prototype_/code_pub/cn/vacation_v2/ttd/v3/*.php','D:/working/TFS2010/UISolution/website/_webresource_/styles/vacation_v2/*.css','D:/working/TFS2010/UISolution/website/_pic_/ttdonline/*']

            },

            sass: {

                files: ['sass/*.{scss,sass}','sass/*.{scss,sass}'],

                tasks: ['sass:dist']

            }

        },

        //js合并任务

        concat : {

            webqq : {

                files : {

                     'dist/js/test.js' : ['js/a.js','js/b.js']

                }

            }

         },

         //js压缩任务

         uglify : { 

            options: {

                banner: '/** \n * <%= pkg.name %> \n * author:<%= pkg.author %> \n * update:<%= new Date() %> \n**/\n'

            },

            webqq : {

                files : {

                     'dist/js/test.min.js' : ['dist/js/test.js']

                }

            }

        },

        //css压缩任务

        cssmin: {

            options: {

                    banner: '/** \n * <%= pkg.name %> \n * author:<%= pkg.author %> \n * update:<%= new Date() %> \n**/'

            },

            cssmini: {

                files: {

                  'D:/git_ttd/ResStatic/code/ResACTOnline/css/vacation_v2/book_v3.1_ttd.css': ['D:/working/TFS2010/UISolution/website/_webresource_/styles/vacation_v2/book_v3.1_ttd.css'] 

                }

            }

        },

        //sass编译

        sass: {

          dist: {

            files: {

              'dist/css/test.css': 'sass/test.scss'

            }

          }

        }



    }); // grunt.initConfig配置完毕

 

    // 监控html js css

    grunt.loadNpmTasks('grunt-contrib-connect');

    grunt.loadNpmTasks('grunt-contrib-watch');

    grunt.registerTask('live', ['connect', 'watch']);



    //合并压缩js

    grunt.loadNpmTasks('grunt-contrib-concat');  //js合并

    grunt.loadNpmTasks('grunt-contrib-uglify');  //js压缩

    grunt.registerTask('jsmini', ['cssmin']);



    //压缩css

    grunt.loadNpmTasks('grunt-css');

    grunt.registerTask('cssmini', ['cssmin']);



    //编译sass

    grunt.registerTask('sassmini', ['sass:dist', 'watch']);

    grunt.loadNpmTasks('grunt-sass');

    grunt.loadNpmTasks('grunt-contrib-watch');

};

 

你可能感兴趣的:(grunt)