关于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的学习的更多相关文章

  1. 前端开发自动化工作流工具,JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  2. JavaScript自动化构建工具grunt、gulp、webpack介绍

    前端开发自动化工作流工具,JavaScript自动化构建工具grunt.gulp.webpack介绍 前端自动化,这样的一个名词听起来非常的有吸引力,向往力.当今时代,前端工程师需要维护的代码变得及为 ...

  3. 前端自动化构建工具Grunt

    一.了解Gurnt(http://www.open-open.com/lib/view/open1433898272036.html) Grunt 是一个基于任务的JavaScript工程命令行构建工 ...

  4. 浅谈自动化构建之grunt

    自动化构建 开发行业的自动化构建 一句话把源代码转化为生产代码,作用是脱离运行环境兼容带来的问题开发阶段使用提高效率的语法,规范 和标准,构建转换那些不被支持的特性转化成能够执行的代码. 一.简单的自 ...

  5. JavaScript自动化构建工具入门----grunt、gulp、webpack

    蛮荒时代的程序员: 做项目的时候,会有大量的js 大量的css   需要合并压缩,大量时间需要用到合并压缩 在前端开发中会出现很多重复性无意义的劳动  自动化时代的程序员: 希望一切都可以自动完成  ...

  6. 前端自动化构建工具 gulp 学习笔记 一、

    一.我对gulp的初期理解 是一种前端辅助开发工具 可以帮你把js,css,img等文件 合并.压缩,图片好像是合并为精灵图,合并为精灵图之后,还会生成一个css样式表. 官方解说是:基于流的自动化构 ...

  7. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

  8. 前端自动化构建工具-yoman浅谈

    如今随着前端技术的飞速发展,前端项目也变得越来越复杂. 快速的搭建一个集成多种工具和框架的复杂前端项目也越来越成为一种需求. 当然如果你要自己从0开始完全自己diy,绝对可以,只不过需要耗费一些不少的 ...

  9. 前端构建工具Gulp的学习和使用

    前几天刚鼓捣了Grunt的使用,结果文档还没捂热,老大说我们还是用gulp吧,搞得我又得来整gulp,眼泪流成河了,真是不晓得底层人民的辛苦啊.不过经过对gulp的学习,发现很好用,比grunt舒服! ...

随机推荐

  1. js生成6位随机码

    js生成6位随机数字: let chars = '0123456789'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/ let maxPos = chars.len ...

  2. Angular4 step by step.4

    1.官方的模拟远程调用API接口没整出来,干脆自己使用 最新版本 .netcore2.1.0 preview 作为请求地址 2.直接上图懒得沾代码了,等完善后再开放所有源码: 3.使用了Chole.O ...

  3. Flash流媒体服务器软件

    所谓流媒体技术,是指将连续的影像和声音信息经过压缩处理后放在网站服务器上,让用户能够一边下载一边观看.收听(即所谓的“在线欣赏”),而不需要等整个压缩文件下载到自己的机器上才可以欣赏的网络传输技术.目 ...

  4. mysql Backup &recovery

    备份数据库非常重要,这样您就可以恢复数据,并在发生问题时重新启动并运行,例如系统崩溃,硬件故障或用户错误地删除数据. 在升级MySQL安装之前,备份也是必不可少的保护措施,它们可用于将MySQL安装转 ...

  5. [Java反射基础一]Class类的使用

    任何一个类都是Class类的实例对象,这个实例对象有三种表示方式 第一种表示方式(任何一个类都有一个隐含的静态成员变量class): Class c1 = Foo.class; 第二种表示方式(已知该 ...

  6. linux下查看内存的使用情况

    windows上有各种软件可以进行“一键加速”之类的操作,释放掉一些内存(虽然我暂时不知道是怎么办到的,有待后续学习).而任务管理器也可以很方便地查看各进程使用的内存情况,如下图: 同样地,linux ...

  7. JavaScript里面的居民们2-字符串

    基于HTML,实现需求 按照HTML中按钮的描述以此实现功能 计算结果显示在 id 为 result 的 P 标签中 <!DOCTYPE html> <html> <he ...

  8. JavaScript 访问对象属性和方法及区别

    这篇文章主要介绍了浅析JavaScript访问对象属性和方法及区别的相关资料,仅供参考 属性是一个变量,用来表示一个对象的特征,如颜色.大小.重量等:方法是一个函数,用来表示对象的操作,如奔跑.呼吸. ...

  9. #学习tips——写给自己的语录

    用编程证明自己的观点! "我以为我懂了?"-- 花1/3的时间去学去记,剩下的时间应用做记忆实战. 记录一个转变 2018.6.7 (英文字幕-->无字幕!)good job ...

  10. 【Python】安装配置Anaconda

    优点:解决Python 库依赖问题 清华安装镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/