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
Grunt.js
Search
Matias Singers
January 29, 2014
Programming
180
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Grunt.js
Matias Singers
January 29, 2014
Other Decks in Programming
See All in Programming
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
160
プロポーザルを書いてもらう
pvcresin
0
560
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
480
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
490
Building a Meta Ray-Ban display app
akkeylab
0
170
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
FastAPI の並行処理モデルを完全に理解する
hoto17296
1
180
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.7k
yield再入門 #phpcon
o0h
PRO
0
1.2k
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
340
リアルな遅延を測る仕様
kota_yata
1
120
VibeCodingからAgenticWorkflowへ
starfish719
0
680
Featured
See All Featured
Design in an AI World
tapps
1
280
Google's AI Overviews - The New Search
badams
0
1.1k
What's in a price? How to price your products and services
michaelherold
247
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
470
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
210
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
210
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Transcript
None
Grunt
$ npm install -g grunt-cli Installation
Setup + Gruntfile.js package.json
$ npm init $ npm install grunt --save-dev $ npm
install grunt-contrib-connect --save-dev $ npm install grunt-contrib-watch --save-dev $ npm install grunt-contrib-sass --save-dev $ npm install load-grunt-tasks --save-dev Install Grunt plugins
1 { 2 "name": "my-project", 3 "version": "0.1.0", 4 "devDependencies":
{ 5 "grunt": "~0.4.2", 6 "grunt-contrib-connect": "~0.6.0", 7 "grunt-contrib-watch": "~0.5.3", 8 "grunt-contrib-sass": "~0.7.0", 9 "load-grunt-tasks": "~0.3.0" 10 } 11 } package.json https://npmjs.org/doc/json.html
• Loading Grunt plugins and tasks • "wrapper" function •
Project and task configuration • Custom tasks Gruntfile.js http://gruntjs.com/getting-started
1 module.exports = function(grunt) { 2 // instead of having
multiple grunt.loadNpmTasks(''); 3 require('load-grunt-tasks')(grunt); 4 5 // Do grunt-related things in here 6 }; Gruntfile.js - wrapper http://gruntjs.com/getting-started
1 module.exports = function(grunt) { 2 require('load-grunt-tasks')(grunt); 3 4 grunt.initConfig({
5 connect: { 6 options: { 7 port: 9001, 8 open: true, 9 hostname: 'localhost' 10 }, 11 server: { 12 // specific configs for the server task 13 } 14 }, 15 }); 16 }; Gruntfile.js - task configuration http://gruntjs.com/getting-started
1 // Default task(s). 2 grunt.registerTask('default', ['connect:server']); Gruntfile.js - custom
tasks http://gruntjs.com/getting-started
1 // Default task(s). 2 grunt.registerTask('default', ['connect:server']); Gruntfile.js - custom
tasks 1 // A very basic default task. 2 grunt.registerTask('default', 'Logger', function() { 3 grunt.log.write('Logging...').ok(); 4 }); http://gruntjs.com/getting-started
Gruntfile.js - custom tasks 1 grunt.registerTask('server', [ 2 'clean:server', 3
'sass:server', 4 'connect:server', 5 'watch' 6 ]); http://gruntjs.com/getting-started
http://gruntjs.com/plugins
http://gruntjs.com/plugins
None
Concatenating 1 concat: { 2 'js/main.js': [ 3 'js/controllers/events.js', 4
'js/controllers/login.js', 5 'js/controllers/menu.js' 6 ] 7 } module: grunt-contrib-concat
Concatenating module: grunt-contrib-concat grunt-usemin + 1 <!-- build:js js/main.js -->
2 <script src="js/controllers/events.js"></script> 3 <script src="js/controllers/login.js"></script> 4 <script src="js/controllers/menu.js"></script> 5 <!-- endbuild -->
Watching files 1 watch: { 2 sass: { 3 files:
['styles/**/*.{scss,sass}'], 4 tasks: ['sass:server'] 5 }, 6 livereload: { 7 files: [ 8 'views/**/*.html', 9 'scripts/**/*.js', 10 'styles/**/*.css', 11 'img/**/*.{png,jpg,jpeg,gif,webp,svg}' 12 ], 13 options: { 14 livereload: true 15 } 16 } 17 } module: grunt-contrib-watch
Watching files module: grunt-contrib-watch - Waiting... OK >> File "public/styles/main.sass"
changed. ! Running "sass:app" (sass) task ! Done, without errors. ... Reload public/styles/main.css ... Completed in 0.178s at Tue Jan 28 2014 12:22:51 GMT+0800 (MYT)
None
enjoy your automated workflow!
Advantages
@matiassingers github.com/matiassingers Thank you! Any questions?