自动化构建工具grunt的学习
关于grunt的一些记录,记的比较乱。。。
0.删除node_modules文件夹
命令行:
npm install rimraf -g //先运行
rimraf node_modules //然后运行
1.安装grunt及插件
安装grunt:
npm install grunt --save-dev
安装插件,不需要的可以删除:
npm install --save-dev grunt-contrib-cssmin grunt-contrib-uglify grunt-contrib-watch grunt-contrib-copy
2.插件介绍
grunt-contrib-jshint:javascript语法错误检查;
grunt-contrib-watch:实时监控文件变化、调用相应的任务重新执行;
grunt-contrib-uglify:JS文件压缩
grunt-contrib-cssmin:css文件压缩
grunt-contrib-copy:复制文件、文件夹
grunt-contrib-clean:清空文件、文件夹
grunt-contrib-concat:合并多个文件的代码到一个文件中
grunt-contrib-htmlmin: HTML文件压缩
3.—save-dev

“—save-dev”的意思是,在当前目录安装grunt的同时,顺便把grunt保存为这个目录的开发依赖项。
上文在配置package.json时,其中的“devDependencies”中就会存储开发依赖项。
在学习grunt中,遇到的一些教程链接:
npm的package.json中文文档:https://github.com/ericdum/mujiang.info/issues/6
grunt入门教程:http://www.cnblogs.com/wangfupeng1988/p/4561993.html
grunt常用插件及示例说明:http://blog.csdn.net/ligang2585116/article/details/53790043
我配置的Gruntfile.js文件
module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        clean: {
            build: ['build']
        },
        copy: {
            main: {
                files: [
                    {
                        expand: true,
                        cwd: 'www',
                        src: '**',
                        dest: 'build',
                        flatten: false,
                        filter: 'isFile'
                    }
                ]
            }
        },
        uglify: {
            main: {
                options: {
                    sourceMap: false
                },
                files: [
                    {
                        expand: true,
                        cwd: 'build/src/js/',
                        src: ['**/*.js', '!**/*.min.js'],
                        dest: 'build/src/js/'
                    },
                    {
                        expand: true,
                        cwd: 'build/src/libs/',
                        src: ['*.js', '!*.min.js'],
                        dest: 'build/src/libs/'
                    },
                    {
                        expand: true,
                        cwd: 'build/src/libs/jquery',
                        src: ['*.js', '!*.min.js'],
                        dest: 'build/src/libs/jquery'
                    },
                    {
                        expand: true,
                        cwd: 'build/src/libs/layui/lay/modules',
                        src: ['*.js', '!*.min.js'],
                        dest: 'build/src/libs/layui/lay/modules'
                    },
                    {
                        expand: true,
                        cwd: 'build/src/libs/layui',
                        src: ['*.js', '!*.min.js'],
                        dest: 'build/src/libs/layui'
                    }
                ]
            }
        },
        cssmin: {
            /* minify: {
                expand: true,
                cwd: 'demo/resources/css',
                src: ['*.css', '!*.min.css'],
                dest: 'build/resources/css'
            } */
            main: {
                files: [
                    {
                        expand: true,
                        cwd: 'build/src/css',
                        src: ['*.css', '!*.min.css'],
                        dest: 'build/src/css'
                    }
                ]
            },
            easyUI: {
                files: [
                    {
                        expand: true,
                        cwd: 'build/src/libs/easyUI',
                        src: ['*.css', '!*.min.css'],
                        dest: 'build/src/libs/easyUI'
                    }
                ]
            }
        },
        watch: {
            options: {
                livereload: true
            },
            build: {
                files: ['www/src/*.html', 'www/src/js/**/*.js', 'www/src/css/*.css'],
                tasks: ['uglify', 'cssmin:main'],
                options: {
                    spawn: false
                }
            }
        }
    });
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.registerTask('default', ['clean', 'copy', 'cssmin', 'watch']);
    //grunt.registerTask('default', ['clean']);
};
自动化构建工具grunt的学习的更多相关文章
- 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍
		前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ... 
- JavaScript自动化构建工具grunt、gulp、webpack介绍
		前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ... 
- 前端自动化构建工具Grunt
		一.了解Gurnt(http://www.open-open.com/lib/view/open1433898272036.html) Grunt 是一个基于任务的JavaScript工程命令行构建工 ... 
- 浅谈自动化构建之grunt
		自动化构建 开发行业的自动化构建 一句话把源代码转化为生产代码,作用是脱离运行环境兼容带来的问题开发阶段使用提高效率的语法,规范 和标准,构建转换那些不被支持的特性转化成能够执行的代码. 一.简单的自 ... 
- JavaScript自动化构建工具入门----grunt、gulp、webpack
		蛮荒时代的程序员: 做项目的时候,会有大量的js 大量的css 需要合并压缩,大量时间需要用到合并压缩 在前端开发中会出现很多重复性无意义的劳动 自动化时代的程序员: 希望一切都可以自动完成 ... 
- 前端自动化构建工具 gulp 学习笔记 一、
		一.我对gulp的初期理解 是一种前端辅助开发工具 可以帮你把js,css,img等文件 合并.压缩,图片好像是合并为精灵图,合并为精灵图之后,还会生成一个css样式表. 官方解说是:基于流的自动化构 ... 
- 前端自动化构建工具gulp的使用总结
		前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ... 
- 前端自动化构建工具-yoman浅谈
		如今随着前端技术的飞速发展,前端项目也变得越来越复杂. 快速的搭建一个集成多种工具和框架的复杂前端项目也越来越成为一种需求. 当然如果你要自己从0开始完全自己diy,绝对可以,只不过需要耗费一些不少的 ... 
- 前端构建工具Gulp的学习和使用
		前几天刚鼓捣了Grunt的使用,结果文档还没捂热,老大说我们还是用gulp吧,搞得我又得来整gulp,眼泪流成河了,真是不晓得底层人民的辛苦啊.不过经过对gulp的学习,发现很好用,比grunt舒服! ... 
随机推荐
- docker 镜像构建上下文理解
			原文 写得贼好,特别鸣谢,哈哈 如果注意,会看到 docker build 命令最后有一个 . . . 表示当前目录,而 Dockerfile就在当前目录,因此不少初学者以为这个路径是在指定 Dock ... 
- C Primer Plus note2
			warning: 'mmin' is used uninitialized in this function [-Wuninitialized]| 编译器出现如上图的警告,是因为变量‘mmin’没有初 ... 
- git基本命令集合
			以下内容不适合初学者 括号中表示需要自己填写 v1.0 git add git commit -m git commit -a -m git commit -amend git clone git l ... 
- Unknown entity XXX
			在jdbc中使用session保存实体的时候,保存出错,Unknown entity XXX 一种解决方案为 http://ningnian169.blog.51cto.com/2417825/450 ... 
- CSS3自定义loading效果
			效果: 使用CSS3完成loading的制作 css样式: <style type="text/css"> .mask { position: fixed; left: ... 
- IntelliJ IDEA 16创建Web项目
			首先要理解一个概念:在IntelliJ IDEA中“new Project”相当于eclipse中的工作空间(Workspace),而“new Module”相当于eclipse中的工程(Projec ... 
- jquery each() 方法跳出循环
			1.jquery each() 方法 return false: 的时候 相当于 break; 跳出整个循环: 2.jquery each() 方法 return true: 的时候 相当于 ... 
- iDempiere 使用指南 开发环境搭建
			Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ... 
- 【Android】Warning :uninstalling will remove the application data!
			最近从Android Studio向手机发布项目过程中经常出现, 问题虽小,但是开发过程中确实浪费时间. It is possible that issue is resolved by uninst ... 
- mac安装brew, bower
			Mac安装Brew 安装命令如下:curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/loc ... 
