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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
Data-Centric Kaggle
isax1015
2
770
Fluid Templating in TYPO3 14
s2b
0
130
Architectural Extensions
denyspoltorak
0
280
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
170
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
560
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
SourceGeneratorのススメ
htkym
0
190
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.8k
CSC307 Lecture 01
javiergs
PRO
0
690
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
280
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
130
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
190
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Embracing the Ebb and Flow
colly
88
5k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
180
How to Think Like a Performance Engineer
csswizardry
28
2.4k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
How to Ace a Technical Interview
jacobian
281
24k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
180
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]
)