Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
using-grunt-js
Search
TooBug
May 31, 2013
Programming
0
30
using-grunt-js
使用Grunt.js走进前端构建新时代
TooBug
May 31, 2013
Tweet
Share
Other Decks in Programming
See All in Programming
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
710
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
110
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
450
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
540
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
380
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
270
Data-Centric Kaggle
isax1015
2
770
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.5k
AtCoder Conference 2025
shindannin
0
1.1k
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
Paper Plane
katiecoart
PRO
0
46k
Music & Morning Musume
bryan
47
7.1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
180
The browser strikes back
jonoalderson
0
360
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
HDC tutorial
michielstock
1
370
Automating Front-end Workflow
addyosmani
1371
200k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
210
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
79
Transcript
使用Grunt.js走进前端构建 新时代 TooBug 2013.3
那一年,世界还很美好 写HTML 写HTML+CSS 写HTML+CSS+JS 发布
直到“性能”遇到了前端 写HTML 写CSS 写JS 压缩CSS 合并CSS 雪碧图 压缩JS 合并JS Base64
图片压缩 时间戳 …… 发 布
前端开始有了预处理工具 ◦ YUI Compressor (Java) ◦ Google Closure Compiler (Java)
◦ CSS Tidy/Clean CSS (online) ◦ uglify (JavaScript) ◦ CSS Gaga (Windows) ◦ ……
问题随之而来 ◦ 学习门槛 * 每个工具 * 每个人 ◦ 流程约定 &
规范 * 每个人 ◦ 初始化需要安装各种平台 ◦ 复杂的配置或者约定 ◦ 跨平台? ◦ 配置漫游?
除了性能,还要质量 ◦ HTML validate ◦ CSS validate ◦ CSS Lint
◦ JSLint/Hint ◦ 测试(单元测试 、黑盒测试) ◦ ……
除了它俩,还有可维护性以及“爽” ◦ LESS & BootStrap 动态样式语言,“最像CSS” ◦ SASS & Compass
动态样式语言,“最强大” ◦ Stylus 动态样式语言,“最优雅” ◦ Coffee & Coco 类python语法,填补了一些坑 ◦ Type Script 来自Microsoft ◦ Dart 来自Google
自己动手,丰衣足食 手工 ◦ …… ◦ …… ◦ …… ◦ ……
◦ 杀了我吧!!! 批处理 ◦ 学习成本高昂 ◦ 编写成本尤其高昂 ◦ 维护? ◦ 跨平台?
瑞士军刀——Grunt.js Grunt.js 压缩/合并 CSS 压缩/合并 JS 雪碧图 BASE64 图片优化 时间戳
LESS/SASS/Stylus/ Coffee/Coco 单元测试 黑盒测试 Lint/Hint Validate 想象力
何方神圣? ◦ 开源项目(gruntjs.com) ◦ 基于Node.js ◦ 命令行 ◦ 跨平台(Win/OS X/Linux)
◦ 使用时以任务(Task)为构建颗粒 ◦ 任务描述使用配置文件 ◦ 插件式(仅自带极少构建功能)
一堵芳容 $ grunt Running "jshint:gruntfile" (jshint) task >> 1 file
lint free. Running "jshint:src" (jshint) task >> 1 file lint free. Running "jshint:test" (jshint) task >> 1 file lint free. Running "qunit:files" (qunit) task Testing test/tiny-pubsub.html....OK >> 4 assertions passed (23ms) Running "clean:files" (clean) task Cleaning "dist"...OK Running "concat:dist" (concat) task File "dist/ba-tiny-pubsub.js" created. Running "uglify:dist" (uglify) task File "dist/ba-tiny-pubsub.min.js" created. Uncompressed size: 389 bytes. Compressed size: 119 bytes gzipped (185 bytes minified). Done, without errors.
得到ing开始(getting started) 1. 本机环境 a. 安装Node.js(http://nodejs.org) b. 设置代理(npm set proxy=http://....com:8080)
c. 安装Grunt-CLI(npm install -g grunt-cli) 2. 项目配置 a. 准备package.json(npm init) b. 安装依赖(npm install grunt-contrib-xx --save-dev) c. 准备Gruntfile.js(即构建任务) 3. 构建 a. grunt b. 木有了……
常用插件 ◦ grunt-contrib-jshint ◦ grunt-contrib-csslint* ◦ grunt-contrib-uglify ◦ grunt-contrib-cssmin ◦
grunt-contrib-concat ◦ grunt-contrib-copy ◦ grunt-usemin** ◦ grunt-htmlhint***
资源 ◦ Gruntjs官方网站 http://www.gruntjs.com ◦ Gruntjs中文社区 http://www.gruntjs.org ◦ http://www.oschina.net/question/89964_47198 ◦
http://www.cnblogs.com/lhb25/tag/Grunt%E6%95%99%E7%A8%8B/ ◦ http://pan.baidu.com/share/link?shareid=114364&uk=3307876012
About TooBug 前端工程师 现就职于腾讯CDC http://weibo.com/TooooBug https://github.com/TooooBug
[email protected]
附:本机环境配置 $ npm set proxy=http://proxy.tencent.com:8080 $ sudo npm install -g
grunt-cli Password: npm http GET https://registry.npmjs.org/grunt-cli npm http 200 https://registry.npmjs.org/grunt-cli ...... /usr/local/bin/grunt -> /usr/local/lib/node_modules/grunt-cli/bin/grunt
[email protected]
/usr/local/lib/node_modules/grunt-cli ├──
[email protected]
(
[email protected]
) └──
[email protected]
(
[email protected]
,
[email protected]
)
附:项目配置 $ npm init This utility will walk you through
creating a package.json file. ...... Press ^C at any time to quit. name: (test-npm-init) test version: (0.0.0) 0.0.1 description: test ...... About to write to /.../package.json: { "name": "test", ....... } Is this ok? (yes) yes npm WARN package.json
[email protected]
No README.md file found! $ npm install grunt-contrib-cssmin -- savedev npm WARN package.json
[email protected]
No README.md file found! npm http GET https://registry.npmjs. org/grunt-contrib-cssmin npm http 200 https://registry.npmjs. org/grunt-contrib-cssmin
[email protected]
node_modules/grunt ├──
[email protected]
....... └──
[email protected]
(
[email protected]
)
[email protected]
node_modules/grunt-contrib-cssmin ├──
[email protected]
(zlib-
[email protected]
) └──
[email protected]
(
[email protected]
)