关键词:
- jshint代码检查
- 代码合并
- 代码压缩--js/css/html都可以
- SASS/LESS编译css
- watch监听---文件发生改变自动执行任务
npm install -g grunt-cli
- 将images/html和复制到 发布文件夹build下
- 用jshint检查js语法
- 合并四个js文件(分别合并,因为a,b用于不同的页面)
- 编译scss文件
- 压缩合并后的js文件,存储到build下
- 调试:新建一个本地服务器监听文件改变自动刷新HTML文件
- 复制文件:grunt-contrib-copy
- 合并文件:grunt-contrib-concat
- 语法检查:grunt-contrib-jshint
- Scss 编译:grunt-contrib-sass
- 压缩文件:grunt-contrib-uglify
- 监听文件变动:grunt-contrib-watch
- 建立本地服务器:grunt-contrib-connect
npm install --save-dev grunt-contrib-copy grunt-contrib-concat grunt-contrib-jshint grunt-contrib-sass grunt-contrib-uglify grunt-contrib-watch grunt-contrib-connect
- "wrapper" 函数
- 项目与任务配置
- 加载grunt插件和任务
- 自定义任务
grunt.initConfig({ pkg: grunt.file.readJSON(‘package.json‘), uglify: { options: { banner: ‘/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n‘ }, build: { src: ‘src/<%= pkg.name %>.js‘, dest: ‘build/<%= pkg.name %>.min.js‘ } } });
其中先写了一句 pkg: grunt.file.readJSON(‘package.json‘) 功能是读取 package.json 文件,并把里面的信息获取出来,方便在后面任务中应用(例如下面就用了 <%= pkg.name %> 来输出项目名称),这样可以提高灵活性。
grunt.loadNpmTasks(‘grunt-contrib-uglify‘);
grunt.registerTask(‘default‘, [‘uglify‘]);
(default是默认的task,当你在命令行执行grunt的时候,会执行注册在default上的任务)
grunt.registerTask(‘compress‘, [‘uglify:build‘]);
如果想要执行这个 task,我们需要在命令行输入 grunt compress 命令来执行这条 task,而这条 task 的任务是 uglify 下面的 build 任务,也就是说,我们只会执行 uglify 里面 build 定义的任务,而不会执行 uglify 里面定义的其他任务。
//wrapper函数 module.exports = function(grunt) { //你可以像普通的js文件一样添加自己的代码 var sassStyle = ‘expanded‘; //1.配置任务 tasks--根据插件的文档来定义任务 grunt.initConfig({ pkg: grunt.file.readJSON(‘package.json‘), //将html和图片从src复制到build copy: { //task html: { //target files: [ { expand: true, cwd: ‘./src/html‘, src: ‘*‘, dest: ‘./build/html/‘ } ] }, images: { //target files: [ { expand: true, cwd: ‘./src/images‘, src: ‘*‘, dest: ‘./build/images/‘ } ] } }, //合并js concat: { /* options: { separator: ‘;‘,//合并分隔符 }, */ dist: { files: { //文件路径 ‘./src/js/a.all.js‘: [‘./src/js/a.1.js‘, ‘./src/js/a.2.js‘], ‘./src/js/b.all.js‘: [‘./src/js/b.1.js‘, ‘./src/js/b.2.js‘] } }, }, //task:编译sass sass: { output: { //target options: { //target options style: sassStyle }, files: { ‘./build/css/style.css‘: ‘./src/scss/style.scss‘ //‘目标文件‘:‘源文件‘ } } }, //代码检查 jshint: { all: [‘./src/js/a.all.js‘, ‘./src/js/b.all.js‘] }, //压缩 uglify: { uglifyjs: { files: { ‘./build/js/a.min.js‘: [‘./src/js/a.all.js‘], ‘./build/js/b.min.js‘: [‘./src/js/b.all.js‘] } } }, //监听 watch: { scripts: { files: [‘./src/js/a.1.js‘, ‘./src/js/a.2.js‘, ‘./src/js/b.1.js‘, ‘/src/js/b.2.js‘], tasks: [‘concat‘, ‘jshint‘, ‘uglify‘] }, sass: { files: [‘./src/scss/style.scss‘], tasks: [‘sass‘] }, livereload: { options: { liverelload: ‘<%= connect.options.livereload %>‘ }, files: [ ‘./src/html/index.html‘, ‘./src/scss/style.scss‘, ‘./src/js/a.1.js‘, ‘./src/js/a.2.js‘, ‘./src/js/b.1.js‘, ‘./src/js/b.2.js‘ ] } }, connect: { options: { port: 9000, open: true, livareload: 35729, //change this to ‘0.0.0.0‘ to access the server from outside hostname: ‘localhost‘ }, server: { options: { port: 9001, base: ‘./‘ } } } }); //2.加载插件 grunt.loadNpmTasks(‘grunt-contrib-copy‘); grunt.loadNpmTasks(‘grunt-contrib-concat‘); grunt.loadNpmTasks(‘grunt-contrib-sass‘); grunt.loadNpmTasks(‘grunt-contrib-jshint‘); grunt.loadNpmTasks(‘grunt-contrib-uglify‘); grunt.loadNpmTasks(‘grunt-contrib-watch‘); grunt.loadNpmTasks(‘grunt-contrib-connect‘); //3.注册任务 grunt.registerTask(‘copyhtml‘, [‘copy:html‘]); //可以用task:target的方法分别注册 grunt.registerTask(‘concatjs‘, [‘concat‘]); //也可以只用task名称注册,默认执行task下全部target grunt.registerTask(‘outputcss‘, [‘sass‘]); grunt.registerTask(‘watchit‘, [‘concat‘, ‘sass‘, ‘jshint‘, ‘uglify‘, ‘connect‘, ‘watch‘]); grunt.registerTask(‘default‘, [‘copy‘, ‘concat‘, ‘sass‘, ‘jshint‘, ‘uglify‘]); }
- 上述例子仅供学习,有些配置还值得推敲,具体的插件配置文档还有很多细节可以学习。
grunt快速入门
快速入门Grunt和Grunt插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器。Grunt0.4.x必须配合Node.js >=0.8.0版本使用。;奇数版本号的Node.js被认为是不稳定的开发版。在安装Grunt前,请确保当前环境中所安装的&... 查看详情
grunt入门学习-gruntfile具体示例
经过前面的学习,将测试的Gruntfile整合在一起!/***CreatedbyAdministratoron2017/6/22.*/module.exports=function(grunt){"usestrict";grunt.initConfig({pkg:grunt.file.readJSON("package.json"),//将存储在package.json文件中的grunt版本信 查看详情
grunt使用入门
一、首先用npm在global环境安装grunt-cli,注意在任何目录下install-g都是一样的 npminstall-ggrunt-cli二、安装grunt插件时项目中一定要package.json,所以在项目中加一个最简单的package.json。不然的话插件安装不上。三、在项目目录下安... 查看详情
grunt入门
Grunt简介:插件丰富,功能强大,jshint对JS文件的检测,以及js和css文件的合并,压缩,是前端自动化压缩构建项目的得力助手。接下来就随lizimeme一起学习grunt的基本使用 我的电脑安装了nodejs,自动全局安装了npm(npm是... 查看详情
grunt入门学习
前端工作流,Grunt上手指南Posted@2013-04-207:15a.m.CategoriesGrunt , javascript我想先花点时间回忆一下作为一个前端需要做的工作(Loading...)JS合并JS压缩CSS压缩CSSSprite图片优化测试静态资源缓存(版本更新)...对应的,一个全副武... 查看详情
yeoman和grunt使用入门教程
下载地址:百度网盘下载 查看详情
glup入门
本文是gulp的入门级介绍,主要内容包括什么是gulp,gulp与grunt有什么区别,gulp可以解决grunt存在的哪些问题,以及一个简单的说明例子。什么是gulpgulp的官方定义非常简洁: 基于文件流的构建系统 。这里强调了streaming,... 查看详情
两小时入门docker(代码片段)
引入Docker是什么?Docker最初是dotCloud公司创始人SolomonHykes在法国期间发起的一个公司内部项目,于2013年3月以Apache2.0授权协议开源,主要项目代码在GitHub上进行维护。Docker使用Google公司推出的Go语言进行开发实现。docker是linux容器的... 查看详情
杂项:grunt-tmod(代码片段)
...~0.4.1如果你没有用过 Grunt ,可以先看一下 新手入门 指南,里面有 查看详情
sass编译css/grunt压缩文件
Sass安装(mac)$sudogeminstallsassscss编译成css文件$sassui.scssui.cssCLI安装$npminstall-ggrunt-cliGrunt安装$npminstallgruntGrunt入门package.json{"name":"my-project-name","version":"0.1.0","devDependencies":{grunt":" 查看详情
前端工程化系列[04]-grunt构建工具的使用进阶(代码片段)
在前端工程化系列[02]-Grunt构建工具的基本使用和前端工程化系列[03]-Grunt构建工具的运转机制这两篇文章中,我们对Grunt以及Grunt插件的使用已经有了初步的认识,并探讨了Grunt的主要组件以及它的运转机制,这篇文章是Grunt使用... 查看详情
grunt压缩html和css
...帮你或你的小组完成大部分无聊的工作.下面咱们来快速入门一下:Grunt和Grunt插件是通过npm安装并管理的,npm是Node.js的包管理器.所以也就是说,想要安装Grunt就必须要安装Node,想要安装G 查看详情
dp入门问题
...没敲代码完全没手感。作为总结,贴一道昨天浪费了我两小时的dp。http://acm.dirring.com/problem.php?cid=1003&pid=3问题D:Dirringlove音乐时间限制: 1Sec 内存限制: 128MB提交: 34 解决: 10题目描 查看详情
《qtquick4小时入门》学习笔记4
http://edu.csdn.net/course/detail/1042/14806?auto_start=1QtQuick4小时入门第七章:处理鼠标与键盘事件1、处理鼠标事件鼠标信号传递一个MouseEvent类型的mouse参数importQtQuick2.7importQtQuick.Controls2.0importQtQuick.Layouts1.0importQtQuick.Win 查看详情
如何在两次之间添加每小时计数
】如何在两次之间添加每小时计数【英文标题】:Howtoaddacountperhourbetweentwotimes【发布时间】:2019-01-1016:17:09【问题描述】:我不确定这是否可行,但我想显示在条目有效的每小时两个日期/时间之间有效的结果:RcvDateTimeFinishDateTi... 查看详情
elasticsearch7.8.0版本入门——elasticsearch-head插件的安装(win10环境)(代码片段)
目录一、elasticsearch-head插件的介绍二、Elasticsearch7.8.0及Node安装三、Grunt安装四、elasticsearch-head插件的下载五、elasticsearch-head插件的安装六、访问elasticsearch-head插件一、elasticsearch-head插件的介绍elasticsearch-head是用于监控Elasticsearch... 查看详情
java中两次之间小时的正确格式
】java中两次之间小时的正确格式【英文标题】:Correctformatforhoursbetweentwotimesinjava【发布时间】:2016-08-1906:36:26【问题描述】:我正在尝试计算java中两次之间的小时数。我正在使用joda时间库来格式化它。该程序可以提取在文本框... 查看详情
宋宝华:docker最初的2小时(docker从入门到入门)
最初的2小时,你会爱上Docker,对原理和使用流程有个最基本的理解,避免满世界无头苍蝇式找资料。本人反对暴风骤雨式多管齐下狂轰滥炸的学习方式,提倡迭代学习法,就是先知道怎么玩,有个感性认识,再深入学习高级用... 查看详情