SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
CREATE YOUR OWN
STATIC SITE GENERATOR
WITH GRUNT
Future of Web Design London 2015 http://internets.io/grunt-
slide-deck
ABOUT ME
Co-owner of Copter Labs
I have 2 cats
   
I work with awesome clients, startups, and agencies to help them
build really cool stuff.
REPETITIVE TASKS ARE THE WORST!
THEY ARE A TIME SUCK
THEY ARE SUPER ANNOYING
STOP POKING ME
WHAT IS A TASK RUNNER?
A TASK RUNNER IS A TOOL THAT ALLOWS YOU TO
STREAMLINE YOUR WEB DEVELOPMENT PROCESS.
WHY DO WE NEED A TASK RUNNER?
BECAUSE AUTOMATION
BECAUSE I'M LAZY
BECAUSE I'M NOT PERFECT
WHAT KINDS OF THINGS CAN WE DO WITH
TASK AUTOMATION?
WHAT KINDS OF THINGS CAN WE DO WITH
TASK AUTOMATION? (CONT'D)
LIVERELOAD, LESS, SASS, MINIFY JAVASCRIPT, MINIFY CSS,
COMPRESS IMAGES, AUTOPREFIXR, MINIFY HTML, MINIFY
SVG, WIREDEP, FIND / REPLACE TEXT, JADE, MARKDOWN,
DEPLOY TO STAGING, DEPLOY TO PRODUCTION, LINT CSS AND
JAVASCRIPT, SOURCEMAPS, CONCATENATE FILES
ALL OF THE THINGS!
WHAT IS GRUNT?
GRUNT IS A TASK-BASED COMMAND LINE BUILD TOOL FOR
WEB DEVELOPMENT PROJECTS.
SETTING UP YOUR GRUNT PROJECT
Make sure you have npmset up, the Node.js package manager.
Create a new project folder and type the following:
$echo"{}">package.json
$npminstall-ggrunt--save-dev
$touchGruntfile.js
Open up Gruntfile.jsand write:
module.exports=function(grunt){
//Projectconfiguration.
grunt.initConfig({
});
};
SIMPLE GRUNT HTTP SERVER
$npminstallgrunt-contrib-watch--save-dev
$npminstallgrunt-contrib-connect--save-dev
$echo'HelloWorld!'>index.html
In Gruntfile.js, edit the grunt.initConfig()function
and add the following:
grunt.initConfig({
connect:{
server:{
options:{
open:true,
livereload:true
}
}
},
watch:{
}
});
SIMPLE GRUNT HTTP SERVER (CONT'D)
Now, towards the bottom of Gruntfile.js
but before the closing };add:
//Thesepluginsprovidenecessarytasks.
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.registerTask('serve',['connect','watch']);
//DefaultTask
grunt.registerTask('default','serve');
You can now type gruntin your terminal, and a browser
window will pop up and go to the url http://0.0.0.0:8000.
Theserveronlyrunsaslongasgruntisrunning,thereforewerunthewatchtask
tonotonlywatchforfilechanges,butalsotokeeptheserveralive.
CONCATENATE AND MINIFY JAVASCRIPT
Type the following into your terminal at your project's root:
$npminstallgrunt-contrib-uglify--save-dev
Add the following to the bottom of your Gruntfile.jswhere
you have your grunt.loadNpmTasksfunctions listed:
grunt.loadNpmTasks('grunt-contrib-uglify');
CONCATENATE AND MINIFY JAVASCRIPT
(CONT'D)
In the grunt.initConfigfunction, in between the last line of
the connectconfiguration, and the first line of the watch
configuration:
uglify:{
js:{
files:{
'assets/js/main.min.js':'assets/js/main.js'
}
}
},
Warning: Be aware of your commas!
COMPILE CSS FROM A PRE-PROCESSOR
In your terminal in the project's root, type:
$npminstallgrunt-contrib-less--save-dev
Add the following to the bottom of your Gruntfile.jswhere
you have your grunt.loadNpmTasksfunctions listed:
$grunt.loadNpmTasks('grunt-contrib-less');
COMPILE CSS FROM A PRE-PROCESSOR
(CONT'D)
Add this to the grunt.initConfigfunction, in between the
last line of the uglifyconfiguration, and the first line of the
watchconfiguration:
less:{
style:{
files:{
'assets/css/main.min.css':'assets/less/main.less'
}
}
},
AUTOPREFIXR
In your terminal in the project's root, type:
$npminstallgrunt-autoprefixer--save-dev
Add the following to the bottom of your Gruntfile.jswhere
you have your grunt.loadNpmTasksfunctions listed:
$grunt.loadNpmTasks('grunt-autoprefixer');
AUTOPREFIXR (CONT'D)
Add this to the grunt.initConfigfunction, in between the
last line of the lessconfiguration, and the first line of the watch
configuration:
autoprefixer:{
main:{
src:'assets/css/main.min.css',
},
},
SETTING UP THE WATCH TASK
Add the following code inside your watchconfiguration:
watch:{
js:{
files:['assets/js/*.js'],
tasks:['uglify:js'],
options:{
livereload:true,
}
},
css:{
files:['assets/less/*.less'],
tasks:['less:style','autoprefixer:main'],
options:{
livereload:true,
}
},
}
InorderforLivereloadtowork,youhavetoinstalltheLivereload( )browserplugin.http://livereload.com/
USING JADE TEMPLATES WITH JSON DATA
In your terminal in the project's root, type:
$npminstallgrunt-contrib-jade--save-dev
Add the following to the bottom of your Gruntfile.jswhere
you have your grunt.loadNpmTasksfunctions listed:
$grunt.loadNpmTasks('grunt-contrib-jade');
USING JADE TEMPLATES WITH JSON DATA
(CONT'D)
jade:{
dist:{
options:{
data:function(){
return{
blog_posts:require(__dirname+'/assets/data/blog-posts.json'
}
}
},
files:{
"index.html":"assets/templates/index.jade",
"blog-post.html":"assets/templates/blog-post.jade"
}
}
},
USING JADE TEMPLATES WITH JSON DATA
(CONT'D)
{
"BlogPostTitle1":{
"source":"http://nicenicejpg.com/200/200",
"description":"Loremipsumdolorsitamet,consecteturadipisicingelit."
"filename":"blog-post-title-1"
},
"BlogPostTitle2":{
"source":"http://fillmurray.com/200/200",
"description":"Perspiciatisquasivelitsequifugavoluptatumassumendaquae."
"filename":"blog-post-title-2"
},
"BlogPostTitle3":{
"source":"http://placecage.com/200/200",
"description":"Adipiscimolestiassitomnisobcaecatianimicupiditateet."
"filename":"blog-post-title-3"
}
}
USING MARKDOWN FILES FOR SITE CONTENT
In your terminal in the project's root, type:
$npminstallgrunt-markdown--save-dev
Add the following to the bottom of your Gruntfile.jswhere
you have your grunt.loadNpmTasksfunctions listed:
$grunt.loadNpmTasks('grunt-markdown');
USING MARKDOWN FILES FOR SITE CONTENT
(CONT'D)
markdown:{
home:{
files:{"index.html":"assets/data/content.md"},
options:{template:'index.html'}
},
blog:{
files:[{
expand:true,
cwd:'assets/data/blog-posts/',
src:'*.md',
dest:'blog-posts/',
ext:'.html'
}],
options:{template:'blog-post.html'}
}
},
USING MARKDOWN FILES FOR SITE CONTENT
(CONT'D)
File: assets/data/blog-posts/blog-post-title-1.md
#BlogPostTitle1
<imgsrc="http://nicenicejpg.com/600/300">
Loremipsumdolorsitamet,consecteturadipisicingelit,seddoeiusmod
incididuntutlaboreetdoloremagnaaliqua.Utenimadminimveniam,quis
exercitationullamcolaborisnisiutaliquipexeacommodoconsequat.Duis
iruredolorinreprehenderitinvoluptatevelitessecillumdoloreeu
nullapariatur.Excepteursintoccaecatcupidatatnonproident.
JSON DATA & MARKDOWN WATCH TASK
data:{
files:[
'assets/templates/**/*.jade',
'assets/data/**/*.json',
'assets/data/**/*.md'
],
tasks:['jade','markdown'],
options:{
livereload:true,
}
}
THE DEFAULT TASK, EVERYTHING AT ONCE
grunt.registerTask('serve',[
'uglify:js',
'less:style',
'autoprefixer:main',
'jade',
'markdown',
'connect',
'watch'
]);
//Defaulttask.
grunt.registerTask('default','serve');
9 PROBLEMS ONLY WEB 
DEVELOPERS WILL UNDERSTAND
LONG, BORING JAVASCRIPT FILES
SOLVED WITH UGLIFY
$npminstallgrunt-contrib-uglify--save-dev
Source:https://www.npmjs.com/package/grunt-contrib-uglify
DIRTY FILES AND FOLDERS
SOLVED WITH CLEAN
$npminstallgrunt-contrib-clean--save-dev
https://www.npmjs.com/package/grunt-contrib-clean
CODE IS BROKEN, WHY?? :(
SOLVED WITH JSHINT
$npminstallgrunt-contrib-jshint--save-dev
Source:https://www.npmjs.com/package/grunt-contrib-jshint
I HAVE TO COPY... EVERYTHING
SOLVED WITH COPY
$npminstallgrunt-contrib-copy--save-dev
Source:https://www.npmjs.com/package/grunt-contrib-copy
I HAVE TOO MANY FILES!
SOLVED WITH CONCAT
$npminstallgrunt-contrib-concat--save-dev
Source:https://www.npmjs.com/package/grunt-contrib-concat
MY PICTURES DOWNLOAD SLOWSIES :(
SOLVED WITH IMAGEMIN
$npminstallgrunt-contrib-imagemin--save-dev
Source:https://www.npmjs.com/package/grunt-contrib-imagemin
I HAVE TOO MANY DEPENDENCIES!
SOLVED WITH WIREDEP
$npminstallgrunt-wiredep--save-dev
Source:https://www.npmjs.com/package/grunt-wiredep
MY SITE LOOKS WEIRD. WHY. WHY!
SOLVED WITH CSSLINT
$npminstallgrunt-contrib-csslint--save-dev
Source:https://www.npmjs.com/package/grunt-contrib-csslint
ALL MY LINKS ARE WRONG!
SOLVED WITH REPLACE
$npminstallgrunt-replace--save-dev
Source:https://www.npmjs.com/package/grunt-replace
RECAP
1. If you're not automating your development process, you're
going to have a bad time.
2. It's real easy to automate things with Grunt.
3. Web designers are people too, with real problems and real
feelings. Let Grunt help you find your happy place.
THANK YOU!
FOLLOW ME ON THE TWITTER: @THEDOTMACK
FOLLOW MY CATS ON INSTAGRAM: @THEDAILYTIM
LIKE COPTER LABS ON FACEBOOK:
HTTP://FACEBOOK.COM/COPTERLABS
CALL YOUR MOM, SHE MISSES YOU

Weitere ähnliche Inhalte

Mehr von Future Insights

Exploring Open Date with BigQuery: Jenny Tong
Exploring Open Date with BigQuery: Jenny TongExploring Open Date with BigQuery: Jenny Tong
Exploring Open Date with BigQuery: Jenny TongFuture Insights
 
A Universal Theory of Everything, Christopher Murphy
A Universal Theory of Everything, Christopher MurphyA Universal Theory of Everything, Christopher Murphy
A Universal Theory of Everything, Christopher MurphyFuture Insights
 
Horizon Interactive Awards, Mike Sauce & Jeff Jahn
Horizon Interactive Awards, Mike Sauce & Jeff JahnHorizon Interactive Awards, Mike Sauce & Jeff Jahn
Horizon Interactive Awards, Mike Sauce & Jeff JahnFuture Insights
 
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...Future Insights
 
Front End Development Transformation at Scale, Damon Deaner
Front End Development Transformation at Scale, Damon DeanerFront End Development Transformation at Scale, Damon Deaner
Front End Development Transformation at Scale, Damon DeanerFuture Insights
 
Structuring Data from Unstructured Things. Sean Lorenz
Structuring Data from Unstructured Things. Sean LorenzStructuring Data from Unstructured Things. Sean Lorenz
Structuring Data from Unstructured Things. Sean LorenzFuture Insights
 
Cinematic UX, Brad Weaver
Cinematic UX, Brad WeaverCinematic UX, Brad Weaver
Cinematic UX, Brad WeaverFuture Insights
 
The Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookThe Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookFuture Insights
 
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisDesigning an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisFuture Insights
 
Accessibility Is More Than What Lies In The Code, Jennison Asuncion
Accessibility Is More Than What Lies In The Code, Jennison AsuncionAccessibility Is More Than What Lies In The Code, Jennison Asuncion
Accessibility Is More Than What Lies In The Code, Jennison AsuncionFuture Insights
 
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...Future Insights
 
Designing for Dyslexia, Andrew Zusman
Designing for Dyslexia, Andrew ZusmanDesigning for Dyslexia, Andrew Zusman
Designing for Dyslexia, Andrew ZusmanFuture Insights
 
Beyond Measure, Erika Hall
Beyond Measure, Erika HallBeyond Measure, Erika Hall
Beyond Measure, Erika HallFuture Insights
 
Real Artists Ship, Haraldur Thorleifsson
Real Artists Ship, Haraldur ThorleifssonReal Artists Ship, Haraldur Thorleifsson
Real Artists Ship, Haraldur ThorleifssonFuture Insights
 
Ok Computer. Peter Gasston
Ok Computer. Peter GasstonOk Computer. Peter Gasston
Ok Computer. Peter GasstonFuture Insights
 
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi KayaDigital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi KayaFuture Insights
 
How to Build Your Future in the Internet of Things Economy. Jennifer Riggins
How to Build Your Future in the Internet of Things Economy. Jennifer RigginsHow to Build Your Future in the Internet of Things Economy. Jennifer Riggins
How to Build Your Future in the Internet of Things Economy. Jennifer RigginsFuture Insights
 
The Wordpress Game Changer. Jenny Wong
The Wordpress Game Changer. Jenny WongThe Wordpress Game Changer. Jenny Wong
The Wordpress Game Changer. Jenny WongFuture Insights
 
A behind the-scenes look at cross-browser testing with web driver, Adrian Bat...
A behind the-scenes look at cross-browser testing with web driver, Adrian Bat...A behind the-scenes look at cross-browser testing with web driver, Adrian Bat...
A behind the-scenes look at cross-browser testing with web driver, Adrian Bat...Future Insights
 
Angular Performance: Then, Now and the Future. Todd Motto
Angular Performance: Then, Now and the Future. Todd MottoAngular Performance: Then, Now and the Future. Todd Motto
Angular Performance: Then, Now and the Future. Todd MottoFuture Insights
 

Mehr von Future Insights (20)

Exploring Open Date with BigQuery: Jenny Tong
Exploring Open Date with BigQuery: Jenny TongExploring Open Date with BigQuery: Jenny Tong
Exploring Open Date with BigQuery: Jenny Tong
 
A Universal Theory of Everything, Christopher Murphy
A Universal Theory of Everything, Christopher MurphyA Universal Theory of Everything, Christopher Murphy
A Universal Theory of Everything, Christopher Murphy
 
Horizon Interactive Awards, Mike Sauce & Jeff Jahn
Horizon Interactive Awards, Mike Sauce & Jeff JahnHorizon Interactive Awards, Mike Sauce & Jeff Jahn
Horizon Interactive Awards, Mike Sauce & Jeff Jahn
 
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
Reading Your Users’ Minds: Empiricism, Design, and Human Behavior, Shane F. B...
 
Front End Development Transformation at Scale, Damon Deaner
Front End Development Transformation at Scale, Damon DeanerFront End Development Transformation at Scale, Damon Deaner
Front End Development Transformation at Scale, Damon Deaner
 
Structuring Data from Unstructured Things. Sean Lorenz
Structuring Data from Unstructured Things. Sean LorenzStructuring Data from Unstructured Things. Sean Lorenz
Structuring Data from Unstructured Things. Sean Lorenz
 
Cinematic UX, Brad Weaver
Cinematic UX, Brad WeaverCinematic UX, Brad Weaver
Cinematic UX, Brad Weaver
 
The Future is Modular, Jonathan Snook
The Future is Modular, Jonathan SnookThe Future is Modular, Jonathan Snook
The Future is Modular, Jonathan Snook
 
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie RewisDesigning an Enterprise CSS Framework is Hard, Stephanie Rewis
Designing an Enterprise CSS Framework is Hard, Stephanie Rewis
 
Accessibility Is More Than What Lies In The Code, Jennison Asuncion
Accessibility Is More Than What Lies In The Code, Jennison AsuncionAccessibility Is More Than What Lies In The Code, Jennison Asuncion
Accessibility Is More Than What Lies In The Code, Jennison Asuncion
 
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
Sunny with a Chance of Innovation: A How-To for Product Managers and Designer...
 
Designing for Dyslexia, Andrew Zusman
Designing for Dyslexia, Andrew ZusmanDesigning for Dyslexia, Andrew Zusman
Designing for Dyslexia, Andrew Zusman
 
Beyond Measure, Erika Hall
Beyond Measure, Erika HallBeyond Measure, Erika Hall
Beyond Measure, Erika Hall
 
Real Artists Ship, Haraldur Thorleifsson
Real Artists Ship, Haraldur ThorleifssonReal Artists Ship, Haraldur Thorleifsson
Real Artists Ship, Haraldur Thorleifsson
 
Ok Computer. Peter Gasston
Ok Computer. Peter GasstonOk Computer. Peter Gasston
Ok Computer. Peter Gasston
 
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi KayaDigital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
Digital Manuscripts Toolkit, using IIIF and JavaScript. Monica Messaggi Kaya
 
How to Build Your Future in the Internet of Things Economy. Jennifer Riggins
How to Build Your Future in the Internet of Things Economy. Jennifer RigginsHow to Build Your Future in the Internet of Things Economy. Jennifer Riggins
How to Build Your Future in the Internet of Things Economy. Jennifer Riggins
 
The Wordpress Game Changer. Jenny Wong
The Wordpress Game Changer. Jenny WongThe Wordpress Game Changer. Jenny Wong
The Wordpress Game Changer. Jenny Wong
 
A behind the-scenes look at cross-browser testing with web driver, Adrian Bat...
A behind the-scenes look at cross-browser testing with web driver, Adrian Bat...A behind the-scenes look at cross-browser testing with web driver, Adrian Bat...
A behind the-scenes look at cross-browser testing with web driver, Adrian Bat...
 
Angular Performance: Then, Now and the Future. Todd Motto
Angular Performance: Then, Now and the Future. Todd MottoAngular Performance: Then, Now and the Future. Todd Motto
Angular Performance: Then, Now and the Future. Todd Motto
 

Kürzlich hochgeladen

专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degreeyuu sss
 
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
PORTAFOLIO   2024_  ANASTASIYA  KUDINOVAPORTAFOLIO   2024_  ANASTASIYA  KUDINOVA
PORTAFOLIO 2024_ ANASTASIYA KUDINOVAAnastasiya Kudinova
 
Design Portfolio - 2024 - William Vickery
Design Portfolio - 2024 - William VickeryDesign Portfolio - 2024 - William Vickery
Design Portfolio - 2024 - William VickeryWilliamVickery6
 
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一Fi sss
 
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree 毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree ttt fff
 
Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi
 
PORTFOLIO DE ARQUITECTURA CRISTOBAL HERAUD 2024
PORTFOLIO DE ARQUITECTURA CRISTOBAL HERAUD 2024PORTFOLIO DE ARQUITECTURA CRISTOBAL HERAUD 2024
PORTFOLIO DE ARQUITECTURA CRISTOBAL HERAUD 2024CristobalHeraud
 
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一diploma 1
 
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证nhjeo1gg
 
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书zdzoqco
 
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一F dds
 
办理(宾州州立毕业证书)美国宾夕法尼亚州立大学毕业证成绩单原版一比一
办理(宾州州立毕业证书)美国宾夕法尼亚州立大学毕业证成绩单原版一比一办理(宾州州立毕业证书)美国宾夕法尼亚州立大学毕业证成绩单原版一比一
办理(宾州州立毕业证书)美国宾夕法尼亚州立大学毕业证成绩单原版一比一F La
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档208367051
 
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一Fi L
 
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degreeyuu sss
 
ARt app | UX Case Study
ARt app | UX Case StudyARt app | UX Case Study
ARt app | UX Case StudySophia Viganò
 
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services DubaiDubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubaikojalkojal131
 
How to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIHow to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIyuj
 
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一z xss
 
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝soniya singh
 

Kürzlich hochgeladen (20)

专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
专业一比一美国亚利桑那大学毕业证成绩单pdf电子版制作修改#真实工艺展示#真实防伪#diploma#degree
 
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
PORTAFOLIO   2024_  ANASTASIYA  KUDINOVAPORTAFOLIO   2024_  ANASTASIYA  KUDINOVA
PORTAFOLIO 2024_ ANASTASIYA KUDINOVA
 
Design Portfolio - 2024 - William Vickery
Design Portfolio - 2024 - William VickeryDesign Portfolio - 2024 - William Vickery
Design Portfolio - 2024 - William Vickery
 
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
(办理学位证)埃迪斯科文大学毕业证成绩单原版一比一
 
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree 毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
毕业文凭制作#回国入职#diploma#degree澳洲弗林德斯大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
 
Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.Mookuthi is an artisanal nose ornament brand based in Madras.
Mookuthi is an artisanal nose ornament brand based in Madras.
 
PORTFOLIO DE ARQUITECTURA CRISTOBAL HERAUD 2024
PORTFOLIO DE ARQUITECTURA CRISTOBAL HERAUD 2024PORTFOLIO DE ARQUITECTURA CRISTOBAL HERAUD 2024
PORTFOLIO DE ARQUITECTURA CRISTOBAL HERAUD 2024
 
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
办理(USYD毕业证书)澳洲悉尼大学毕业证成绩单原版一比一
 
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
在线办理ohio毕业证俄亥俄大学毕业证成绩单留信学历认证
 
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
办理卡尔顿大学毕业证成绩单|购买加拿大文凭证书
 
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
办理学位证(SFU证书)西蒙菲莎大学毕业证成绩单原版一比一
 
办理(宾州州立毕业证书)美国宾夕法尼亚州立大学毕业证成绩单原版一比一
办理(宾州州立毕业证书)美国宾夕法尼亚州立大学毕业证成绩单原版一比一办理(宾州州立毕业证书)美国宾夕法尼亚州立大学毕业证成绩单原版一比一
办理(宾州州立毕业证书)美国宾夕法尼亚州立大学毕业证成绩单原版一比一
 
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
昆士兰大学毕业证(UQ毕业证)#文凭成绩单#真实留信学历认证永久存档
 
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
办理学位证(TheAuckland证书)新西兰奥克兰大学毕业证成绩单原版一比一
 
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
原版美国亚利桑那州立大学毕业证成绩单pdf电子版制作修改#毕业文凭制作#回国入职#diploma#degree
 
ARt app | UX Case Study
ARt app | UX Case StudyARt app | UX Case Study
ARt app | UX Case Study
 
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services DubaiDubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
Dubai Calls Girl Tapes O525547819 Real Tapes Escort Services Dubai
 
How to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AIHow to Empower the future of UX Design with Gen AI
How to Empower the future of UX Design with Gen AI
 
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
办理(UC毕业证书)查尔斯顿大学毕业证成绩单原版一比一
 
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Okhla Delhi 💯Call Us 🔝8264348440🔝
 

Create Your Own Static Site Generator with Grunt (Alex Newman)