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
Search
sporto
November 26, 2013
Programming
1
150
Grunt
sporto
November 26, 2013
Tweet
Share
More Decks by sporto
See All by sporto
React inside Elm
sporto
2
170
Elm
sporto
1
250
Redux: Flux Reduced
sporto
1
320
Practically Immutable
sporto
0
170
Webpack and React
sporto
4
380
Rails with Webpack
sporto
1
210
Lesson learnt building Single Page Application
sporto
0
110
Safe Testing in Ruby
sporto
1
120
Go - A great language for building web applications
sporto
1
310
Other Decks in Programming
See All in Programming
Scala におけるコンパイラエラーとの付き合い方
chencmd
2
430
仮想ファイルシステムを導入して開発環境のストレージ課題を解消する
segadevtech
2
550
Patched fetch did not work
quramy
4
400
Jakarta EE meets AI
ivargrimstad
0
390
全部見せます! クラシルリワードのSwiftTesting移行プロジェクト
uetyo
0
210
rails_girls_is_my_gate_to_join_the_ruby_commuinty
maimux2x
0
200
事業フェーズの変化に対応する 開発生産性向上のゼロイチ
masaygggg
0
210
状態管理ライブラリZustandの導入から運用まで
k1tikurisu
3
470
XStateでReactに秩序を与えたい
gizm000
0
730
Android開発以外のAndroid開発経験の活かしどころ
konifar
2
1k
Architecture Decision Record (ADR)
nearme_tech
PRO
1
690
unique パッケージから学ぶ interning と weak reference @ Asakusa.go#3
karamaru
2
810
Featured
See All Featured
For a Future-Friendly Web
brad_frost
174
9.3k
Embracing the Ebb and Flow
colly
83
4.4k
Robots, Beer and Maslow
schacon
PRO
157
8.2k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
401
65k
Unsuck your backbone
ammeep
667
57k
How STYLIGHT went responsive
nonsquared
93
5.1k
Ruby is Unlike a Banana
tanoku
96
11k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.1k
Producing Creativity
orderedlist
PRO
340
39k
Transcript
Grunt @sebasporto
WHAT? Task runner (like make, rake)
WHY? Cross platform Lots of plug-ins Nice logging Is JS
Is Node
WHY NOT? Verbose Could end as an unmaintainable complex tangle
mess of configuration
Main uses Build system Live reload Daemons Automated tasks Whatever
Common plug-ins Lint Minify Concat Test (Mocha, Jasmine) Optimise images
Installing grunt Install grunt cli as global Install grunt as
local Uses package.json to keep track of dependencies (devDependecies)
Gruntfile module.exports = function(grunt) { ! grunt.initConfig({ uglify: { build:
{ src: 'src/<%= pkg.name %>.js', dest: 'build/<%= pkg.name %>.min.js' } } }); ! grunt.loadNpmTasks('grunt-contrib-uglify'); ! grunt.registerTask('default', ['uglify']); }; tasks config loading and registering tasks
A basic task grunt.registerTask('foo', 'A task', function(arg1, arg2) { …
}); $ grunt foo arg1 arg2
Just Node var foo = require(‘foo’); ! grunt.registerTask('foo', 'A task',
function(arg1, arg2) { // You can do whatever you can with Node ! foo.doSomething(); });
A multitask grunt.registerMultiTask('foo', 'A task', function() { … }); grunt.initConfig({
foo: { dev: {…}, prod: {…} } });
Multitasks $ grunt foo grunt.initConfig({ foo: { dev: {…}, prod:
{…} } }); runs dev and prod
Multitasks $ grunt foo:dev grunt.initConfig({ foo: { dev: {…}, prod:
{…} } }); runs dev only
Chaining tasks grunt.registerTask(‘all', [‘jshint’, ‘mocha’, ‘concat’]); $ grunt all
Chaining tasks grunt.registerTask('all', 'A task', function() { grunt.task.run(‘jshint’, ‘concat’); grunt.task.run(‘ngmin’);
}); $ grunt all
Async tasks grunt.registerTask('all', 'A task', function() { var done =
this.async(); ! doSomethingAsync(done); }); $ grunt all
Events grunt.event.on(‘foo:started’, handler); ! grunt.event.emit(‘foo:stated’, args…);
Installing a plug-in $ npm install grunt-goserver --save-dev grunt.loadNpmTasks(‘grunt-goserver'); !
grunt.initConfig({ goserver: { default: { srcPath: '/full/path/to/src/folder', … }, }, }) In Gruntfile.js
Creating a plug-in Install grunt-init module Clone template Run generator
Code npm publish
Plug-in best practices Create an NPM module first Wrap that
module in a Grunt plug-in
Thanks @sebasporto