Gruntfile.js模板

module.exports = function(grunt) {
    // 配置项
    var AppConfig = {
        name: ‘app‘,
        //源文件目录
        src: ‘app/src‘,
        //生产文件目录
        dist: ‘app/assets‘
    };

    //加载所有的任务
    require(‘load-grunt-tasks‘)(grunt);
    //显示每一个任务所花的时间和百分比
    require(‘time-grunt‘)(grunt);

    grunt.initConfig({
        config: AppConfig,

        // 加载外部包列表
        pkg: grunt.file.readJSON(‘package.json‘),

        // Js文件压缩
        uglify: {
            options: {
                // 此处定义的banner注释将插入到输出文件的顶部
                banner: ‘/*! <%= pkg.author.name %>-<%=pkg.verson%> 最后修改于:<%= grunt.template.today("yyyy-mm-dd") %> */\n‘
            },
            build: {
                options: {
                    // 不混淆变量名
                    mangle: false,
                    // 不删除注释,还可以为 false(删除全部注释)
                    preserveComments: ‘false‘,
                    // 输出压缩率,可选的值有 false(不输出信息)
                    report: "min"
                },
                files: [{
                    expand: true,
                    cwd: ‘<%= config.dist %>/script‘,
                    src: [‘**/*.js‘],
                    dest: ‘<%= config.dist %>/script‘,
                    ext: ‘.min.js‘
                }, {
                    expand: true,
                    cwd: ‘<%= config.dist %>/plugins‘,
                    src: [‘**/*.js‘],
                    dest: ‘<%= config.dist %>/plugins‘,
                    ext: ‘.min.js‘
                }]
            }
        },

        // 代码质量检查工具
        jshint: {
            files: [‘Gruntfile.js‘, ‘<%= config.src %>/script/*.js‘, ‘<%= config.dist %>/script/*.js‘],
            options: {
                jshintrc: ‘.jshintrc‘
            }
        },

        // Less编译
        less: {
            build: {
                options: {
                    compress: false,
                    yuicompress: false
                },
                files: [{
                    expand: true,
                    cwd: ‘<%= config.src %>/less‘,
                    src: [‘**/*.less‘],
                    dest: ‘<%= config.dist %>/css‘,
                    ext: ‘.css‘
                }]
            }
        },

        // Sass编译
        sass: {
            build: {
                options: {
                    style: ‘expanded‘,
                    sourcemap: ‘none‘
                },
                files: [{
                    expand: true,
                    cwd: ‘<%= config.src %>/sass‘,
                    src: [‘**/*.scss‘],
                    dest: ‘<%= config.dist %>/css‘,
                    ext: ‘.css‘
                }, {
                    expand: true,
                    cwd: ‘<%= config.src %>/plugins/bootstrap-sass/assets/stylesheets‘,
                    src: [‘**/*.scss‘],
                    dest: ‘<%= config.dist %>/plugins/bootstrap/css/‘,
                    ext: ‘.css‘
                }]
            }
        },

        //css压缩插件
        cssmin: {
            build: {
                files: [{
                    expand: true,
                    cwd: ‘<%= config.dist %>‘,
                    src: [‘**/*.css‘, ‘!*.min.css‘],
                    dest: ‘<%= config.dist %>‘,
                    ext: ‘.min.css‘
                }]
            }
        },

        // 图片压缩
        imagemin: {
            build: {
                files: [{
                    expand: true,
                    cwd: ‘<%= config.src %>/images‘,
                    src: ‘{,*/}*.{png,jpg,jpeg,gif}‘,
                    dest: ‘<%= config.dist %>/images‘
                }]
            }
        },

        // Autoprefixer解析CSS文件并且添加浏览器前缀到CSS规则里,保证CSS兼容性
        autoprefixer: {
            build: {
                files: [{
                    expand: true,
                    cwd: ‘<%= config.dist %>/css‘,
                    src: [‘*.css‘, ‘!*.min.css‘],
                    dest: ‘<%= config.dist %>/css‘,
                    ext: ‘.css‘
                }]
            }
        },

        // 依赖库自动注入
        wiredep: {
            build: {
                // 依赖注入的页面
                devDependencies: true,
                src: [‘<%= config.name %>/index.html‘],
                ignorePath: /^(\.\.\/)*\.\./,
                directory: ‘<%= config.dist %>/script/plugins‘
            }
        },
        // 合并文件
        concat: {
            bootstrap: {
                src: [
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/transition.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/alert.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/button.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/carousel.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/collapse.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/modal.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/popover.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/tab.js‘,
                    ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/bootstrap/affix.js‘
                ],
                dest: ‘<%= config.dist %>/plugins/bootstrap/bootstrap.js‘
            }
        },
        // 文件复制
        copy: {
            build: {
                files: [{
                    //font-awesome fonts
                    expand: true,
                    flatten: true,
                    cwd: ‘<%= config.src %>/plugins/font-awesome/fonts/‘,
                    src: [‘**‘],
                    dest: ‘<%= config.dist %>/plugins/font-awesome/fonts/‘,
                    filter: ‘isFile‘
                }, {
                    //font-awesome css
                    expand: true,
                    flatten: true,
                    cwd: ‘<%= config.src %>/plugins/font-awesome/css/‘,
                    src: [‘font-awesome.css‘],
                    dest: ‘<%= config.dist %>/plugins/font-awesome/css/‘,
                    filter: ‘isFile‘
                }, {
                    //bootstrap fonts
                    expand: true,
                    flatten: true,
                    cwd: ‘<%= config.src %>/plugins/bootstrap-sass/assets/fonts/‘,
                    src: [‘**‘],
                    dest: ‘<%= config.dist %>/plugins/bootstrap/fonts/bootstrap/‘,
                    filter: ‘isFile‘
                }, {
                    //bootstrap
                    expand: true,
                    cwd: ‘<%= config.src %>/plugins/bootstrap-sass/assets/javascripts/‘,
                    src: [‘bootstrap.js‘],
                    dest: ‘<%= config.dist %>/plugins/bootstrap/‘,
                    filter: ‘isFile‘
                }, {
                    //Jquery
                    expand: true,
                    cwd: ‘<%= config.src %>/plugins/jquery/dist/‘,
                    src: [‘jquery.js‘],
                    dest: ‘<%= config.dist %>/plugins/‘,
                    filter: ‘isFile‘
                }]
            }
        },
        // 清理文件
        clean: {
            build: {
                files: [{
                    dot: true,
                    src: [‘.sass-cache‘]
                }]
            }
        },
        // 本地代理服务器
        connect: {
            options: {
                port: 9000,
                // 默认就是这个值,可配置为本机某个 IP,localhost 或域名
                hostname: ‘localhost‘,
                // 声明给 watch 监听的端口
                livereload: 35729
            },
            proxies: [{
                port: 8090,
                host: ‘192.168.0.111‘,
                context: ‘/webapi‘
            }],
            server: {
                options: {
                    open: true, //自动打开网页 http://
                    base: [
                        ‘<%= config.name %>‘ //主目录
                    ]
                }
            }
        },

        // watch插件的配置信息(监控js,css文件,如改变自动压缩,语法检查)
        watch: {
            // 监听bower包的变化
            bower: {
                files: [‘bower.json‘, ‘package.json‘]
            },
            // 用于监听sass文件
            sass: {
                files: [‘<%= config.src %>/sass/**/*.scss‘],
                tasks: [‘sass:build‘, ‘cssmin:build‘]
            },
            // 用于监听css文件
            css: {
                files: [‘<%= config.dist %>/css/*.css‘],
                tasks: [‘autoprefixer‘]
            },
            // 用于监听JS文件
            js: {
                files: [‘<%= config.src %>/script/**/*.js‘],
                tasks: [‘jshint‘, ‘uglify:build‘],
            },

            livereload: {
                options: {
                    livereload: ‘<%=connect.options.livereload%>‘ //监听前面声明的端口  35729
                },
                files: [ //下面文件的改变就会实时刷新网页
                    ‘<%= config.name %>/*.html‘,
                    ‘<%= config.dist %>/css/{,*/}*.css‘,
                    ‘<%= config.dist %>/script/{,*/}*.js‘,
                    ‘<%= config.dist %>/images/{,*/}*.{png,jpg,gif}‘
                ]
            }
        }
    });

    // 默认被执行的任务列表
    grunt.registerTask(‘default‘, [
        ‘dev‘,
        ‘connect:server‘,
        ‘watch‘
    ]);

    //发布
    grunt.registerTask(‘build‘, [
        ‘sass‘,
        ‘copy‘,
        ‘autoprefixer‘,
        ‘cssmin‘,
        ‘uglify‘,
        ‘imagemin‘,
        ‘clean‘
    ]);

    grunt.registerTask(‘dev‘, [
        ‘sass‘,
        ‘copy‘,
        ‘autoprefixer‘,
        ‘clean‘
    ]);

};
时间: 2024-08-06 03:46:24

Gruntfile.js模板的相关文章

快速开发Grunt插件----压缩js模板

前言 Grunt是一款前端构建工具,帮助我们自动化搭建前端工程.它可以实现自动对js.css.html文件的合并.压缩等一些列操作.Grunt有很多插件,每一款插件实现某个功能,你可以通过npm命名去下载插件,然后使用它们.关于grunt的使用以及配置,卤煮不打算在此介绍.本篇博文重点要讲的是如何快速开发一款自定义的grunt插件.因为卤煮在打包合并代码的时候发现了无法将html和js混合的文件进行压缩处理,为此卤煮也翻了很多资料,没查找到理想的解决方案.在山穷水复之时,硬着头皮自己开发了一个简

Grunt 自动化部署之css、image、javascript、html压缩Gruntfile.js配置

grunt.initConfig方法 用于模块配置,它接受一个对象作为参数.该对象的成员与使用的同名模块一一对应. 每个目标的具体设置,需要参考该模板的文档.就cssmin来讲,minify目标的参数具体含义如下: expand:如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名. cwd:需要处理的文件(input)所在的目录. src:表示需要处理的文件.如果采用数组形式,数组的每一项就是一个文件名,可以使用通配符. dest:表示处理后的文件名或所在目录. ext:

Grunt 自动化部署之css、image、javascript、html压缩Gruntfile.js配置(学习转载)

grunt.initConfig方法 用于模块配置,它接受一个对象作为参数.该对象的成员与使用的同名模块一一对应. 每个目标的具体设置,需要参考该模板的文档.就cssmin来讲,minify目标的参数具体含义如下: expand:如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名. cwd:需要处理的文件(input)所在的目录. src:表示需要处理的文件.如果采用数组形式,数组的每一项就是一个文件名,可以使用通配符. dest:表示处理后的文件名或所在目录. ext:

echarts &nbsp; js 模板制作 地图 案例分享

今天分享一个 echarts   js 模板制作 地图 案例,有类似需求的筒子可以参考 O(∩_∩)O 需求:因为最近管理的全国各地代理服务器越来越多,有时上级需要看下我们的代理分布,比如带宽,比如供应商,如果用纯excel不是很直观,就套用了前端的Js模板,修改了些代码,填充部分值进去,就出来基本效果了. 上效果图: 基本上把全国各地的资源情况很直观的显示出来了,这里只填充了部分值,后期会将值存入mysql,并且用上ajax 来塞值,这里就列个基本的效果图. 5分钟上手echarts,官网教程

js模板引擎--artTemplate

js模板引擎--artTemplate 以前研究过一段时间的handlebars,但因为其渲染性能略逊于腾讯的artTemplate(在artTemplate的GitHub官网上有推荐的性能测试地址),貌似最近耳边听到得最多的模板引擎也就是artTemplate了,所以就花个时间来研究下吧... artTemplate是新一代的javascript模板引擎,若采用拥有V8引擎的chrome浏览器进行测试,其渲染性能甚至能达到知名模板引擎Mustache的20倍以上以及模板引擎tmpl的40倍以上

grunt使用watch和livereload的Gruntfile.js的配置

周末在家看angularJS, 用grunt的livereload的自动刷新, 搞了大半天, 现在把配置贴出来, 免得以后忘记了, 只要按照配置一步步弄是没有问题的; 开始的准备的环境安装是: (1):nodeJS,去官方网站下载(href); (2):然后把nodeJS加到全局的环境变量里面去(nodeJS安装好了就能用npm这个命令了),参考(href); (3):执行npm install grunt -g 和 npm install -g grunt-cli,一个是安装服务端的gurnt

JS模板引擎 :ArtTemplate (2)

上一篇初略的介绍了一下javascript中的模板引擎,有兴趣的可以戳 这里 . 这一篇将带着大家一起做一个简易的模板引擎, 上一篇介绍到:模板引擎其实做的就是两件事. 根据一定的规则,解析我们所定义的模板 根据数据以及模板生成html(其实背后也是用的字符串拼接) 那么,首先,我们要有一个模板,一份数据,以及想生成的结果. 例如:模板: 1 <script id="test" type="text/html"> 2 <p><%=tit

JS模板引擎

JS模板引擎 :ArtTemplate 1.为什么需要用到模板引擎 我们在做前端开发的时候,有时候经常需要根据后端返回的json数据,然后来生成html,再显示到页面中去. 例如这样子: var data = [ {text: "测试一"}, {text: "测试二"}, {text: "测试三"}, {text: "测试四"} ]; function generateList(data) { var listHtml = &

js模板引擎介绍搜集

js模板引擎越来越多的得到应用,如今已经出现了几十种js模板引擎,国内各大互联网公司也都开发了自己的js模板引擎(淘宝的kissy template,腾讯的artTemplate,百度的baiduTemplate等),如何从这么多纷繁的模板引擎中选择一款适合自己的呢,笔者最近对主流的js模板引擎(mustache,doT,juicer,artTemplate,baiduTemplate,Handlebars,Underscore)做了一番调研,分享出来希望对大家有用. 从这几个指标来比较js模板