SlideShare une entreprise Scribd logo
1  sur  29
CLAY SMITH
Javascript apps as a build artifact
clay@pagerduty.com
@smithclay
May 6, 2014 at EmpireJS
This is my brain on Javascript.
From the “Javascript Development Workflow” talk
Understanding it all (from @paulirish)
Easy answer: We’re using Javascript written for
the web more and in different places.
Why does it matter?
From 4/13 to 4/14, httparchive.org
Now for a 5-minute Overview of the Raging
Javascript Battles of Today
Javascript Battlefield #1 (2010-present)
“My framework is better than yours.”
http://en.wikipedia.org/wiki/Comparison_
of_JavaScript_frameworks
from https://gist.github.com/callumacrae/9231589
Jake
Brunch
smoosh
anvil.js
Grunt
Gear.js
buildr
mimosa
modjs
automaton
james.js
Bud
Gulp
simplebuild
Brocolli
Fez
Javascript Battlefield #2 (2011-present)
“My build tool is better than yours.”
“I prefer to write in _____(A)______, it makes
creating _____(B)______ easier.”
(*)script Battlefield #3 (2010-present)
Coffeescript
ClojureScrip
t
Dart
TypeScript
asm.js
GWT
dogescript
A B
web apps
mobile apps
frameworks
nodebots
arduinos
much wow
Javascript Battlefield #4 (2012-present)
“My dependency management tool is better than yours.”
bower
component.js
favorite package: https://www.npmjs.org/package/debowerify
The easiest way to have a 30-minute
conversation at a Javascript conference.
We’ve all chosen sides.
• Many Javascript libraries for a web app.
• Many dependency managers for libraries.
• Build tools that use dependency managers (written in
JS or another language).
• Many dependencies of the build tools (that might use
another dependency manager)
• Many source languages.
• Many different types of target platforms.
“Just the essential libraries”
A single-page Javascript application c. 2014
PagerDuty Mobile, https://m.pagerduty.com
Here’s the ones PagerDuty uses with gulp.
Plugin-ify your JS build tools (2012-present)
When you realize you need to make it work in mobile web views.
A JavaScript apps running in mobile web
browsers or embedded in native apps.
The mobile (web) frontier (2007-present)
Put all the things in git (or any VCS)
Attempt #1
• well understood workflow (just commit!)
• “easy” mobile builds - git clone to see JS source
• git submodule purgatory (whoops, I forgot!)
• merge conflict hell (Pull Requests broken)
• compiled, concatenated, transformed code in VCS (not
good)
Good:
Bad:
Some cool kids are doing it.
This is a popular approach for many JS libraries
Well… how about using ?
Attempt #2
• well-understood workflow (npm install FTW)
• represents an ideal of JS dependency management
• gives us a way to avoid git submodules and get
*.min.js files out of source control
kudos: npm mentions it in the docs
“The advantage of doing [compilation, transformation,
etc] at prepublish time instead of preinstall or install
time is that they can be done once, in a single place,
and thus greatly reduce complexity and variability.
Additionally, this means that:
You can depend on coffee-script as a devDependency,
and thus your users don't need to have it installed.”
https://www.npmjs.org/doc/misc/npm-scripts.html
Warning! May not do what you expect!
https://github.com/npm/npm/search?q=prepublish&ref=cmdform&type=Issues
(Since we were working with private code)
npm module from private github repo
(we cheated and tried to use git)
^ package.json in our XCode project that pulls our JS app code
npm that pulls a package from git didn’t get us
all the way there
Sadly…
• we need to check in the transformed JS code (and
css, and HTML)
• we introduce lots of complexity into (native) builds
processes. XCode suddenly needs to know how to
gulp (or grunt).
If we want simple native application build….
If we don’t want to check in transformed code…
Overly simplified misleading diagram.
Is there another way?
build artifact (n) - one of many kinds of tangible
by-products produced during the development
of software.
Our production JavaScript app looks like a build
artifact
Build artifacts are happiest in build artifact
repository managers.
The app needs a home
Github Release API as a pseudo-artifact
repository
Attempt #3 - success!
• A “release” in GitHub is just a tag and an collection of
binary blobs stored on S3.
• API Access Only (need to generate a token).
• simplifies native mobile builds (only curl and unzip
required).
Uploading a ZIP archive with a single
index.html to GitHub’s Release API
No (gulp||grunt) plugin? Stream-ify it.
The node.js streaming API is incredible.
Then, add a build step in XCode/Android Studio that
fetches build artifacts
^ Thanks to @alperkokmen
Is there (or should there be) a better tool out
there?
It’s a decent option for hybrid apps
* Sonatype Nexus -> NPM bridge
https://issues.sonatype.org/browse/NEXUS-5852
* Private NPM/“CommonJS Repositories” that are
optimized for build artifacts?
* [insert your solution here]
https://pagerduty.com
Thank you.
Clay Smith
clay@pagerduty.com
@smithclay
Don’t check-in *.min.js files please.
http://blog.pagerduty.com/2014/05/reliable-mobile-
build/

Contenu connexe

Tendances

Tendances (20)

Social Coding GitHub 2015
Social Coding GitHub 2015Social Coding GitHub 2015
Social Coding GitHub 2015
 
Version Controlling
Version ControllingVersion Controlling
Version Controlling
 
Building Node.js Together | Radu Vunvulea
Building Node.js Together | Radu VunvuleaBuilding Node.js Together | Radu Vunvulea
Building Node.js Together | Radu Vunvulea
 
From devOps to front end Ops, test first
From devOps to front end Ops, test firstFrom devOps to front end Ops, test first
From devOps to front end Ops, test first
 
Docker experience @inbotapp
Docker experience @inbotappDocker experience @inbotapp
Docker experience @inbotapp
 
How do we test nodejs apps?
How do we test nodejs apps?How do we test nodejs apps?
How do we test nodejs apps?
 
카카오 공용준님의 "DevOps: on going pursuit of effectiveness"
카카오 공용준님의 "DevOps: on going pursuit of effectiveness"카카오 공용준님의 "DevOps: on going pursuit of effectiveness"
카카오 공용준님의 "DevOps: on going pursuit of effectiveness"
 
Php[tek] 2016 - BDD with Behat for Beginners
Php[tek] 2016 - BDD with Behat for BeginnersPhp[tek] 2016 - BDD with Behat for Beginners
Php[tek] 2016 - BDD with Behat for Beginners
 
Grunt JS - Getting Started With Grunt
Grunt JS - Getting Started With GruntGrunt JS - Getting Started With Grunt
Grunt JS - Getting Started With Grunt
 
Your Future HTML: The Evolution of Site Design with Web Components
Your Future HTML: The Evolution of Site Design with Web ComponentsYour Future HTML: The Evolution of Site Design with Web Components
Your Future HTML: The Evolution of Site Design with Web Components
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみた
 
Stop Sucking at Building Stuff!
Stop Sucking at Building Stuff!Stop Sucking at Building Stuff!
Stop Sucking at Building Stuff!
 
Functional javascript
Functional javascriptFunctional javascript
Functional javascript
 
Custom angular libraries
Custom angular librariesCustom angular libraries
Custom angular libraries
 
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんGithub Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃん
 
Handle the error
Handle the errorHandle the error
Handle the error
 
MVP with GWT and GWTP
MVP with GWT and GWTPMVP with GWT and GWTP
MVP with GWT and GWTP
 
Node.js - Introduction and role in Frontend Development
Node.js - Introduction and role in Frontend DevelopmentNode.js - Introduction and role in Frontend Development
Node.js - Introduction and role in Frontend Development
 
Bbs214 Cloud IDEs
Bbs214 Cloud IDEsBbs214 Cloud IDEs
Bbs214 Cloud IDEs
 
JavaScript Tools and Implementation
JavaScript Tools and ImplementationJavaScript Tools and Implementation
JavaScript Tools and Implementation
 

En vedette

การประกอบ GEARBOX-MOTOR
การประกอบ GEARBOX-MOTORการประกอบ GEARBOX-MOTOR
การประกอบ GEARBOX-MOTOR
kroowissanu
 
5 estruturas de controle
5 estruturas de controle5 estruturas de controle
5 estruturas de controle
PAULO Moreira
 
Informativo de janeiro
Informativo de janeiroInformativo de janeiro
Informativo de janeiro
Lua Barros
 
Evangelio Ilutsrado, 4º Domingo de Pascua
Evangelio Ilutsrado, 4º Domingo de PascuaEvangelio Ilutsrado, 4º Domingo de Pascua
Evangelio Ilutsrado, 4º Domingo de Pascua
cristinamoreubi
 
Mood Board And Sketches
Mood Board And  SketchesMood Board And  Sketches
Mood Board And Sketches
Bonnie Scott
 
01.การกระจายเชื้อเพลิงและแผนpdp
01.การกระจายเชื้อเพลิงและแผนpdp01.การกระจายเชื้อเพลิงและแผนpdp
01.การกระจายเชื้อเพลิงและแผนpdp
Kobwit Piriyawat
 

En vedette (20)

Informative Presentation
Informative PresentationInformative Presentation
Informative Presentation
 
Ecommerce Trends to Watch Out for in 2015
Ecommerce Trends to Watch Out for in 2015Ecommerce Trends to Watch Out for in 2015
Ecommerce Trends to Watch Out for in 2015
 
Resumen
ResumenResumen
Resumen
 
Oncology harris
Oncology harrisOncology harris
Oncology harris
 
การประกอบ GEARBOX-MOTOR
การประกอบ GEARBOX-MOTORการประกอบ GEARBOX-MOTOR
การประกอบ GEARBOX-MOTOR
 
Why should healthcare professionals care about social media?
Why should healthcare professionals care about social media?Why should healthcare professionals care about social media?
Why should healthcare professionals care about social media?
 
Tech coach flyer
Tech coach flyerTech coach flyer
Tech coach flyer
 
5 estruturas de controle
5 estruturas de controle5 estruturas de controle
5 estruturas de controle
 
Arquitetura de informação
Arquitetura de informaçãoArquitetura de informação
Arquitetura de informação
 
Informativo de janeiro
Informativo de janeiroInformativo de janeiro
Informativo de janeiro
 
Evangelio Ilutsrado, 4º Domingo de Pascua
Evangelio Ilutsrado, 4º Domingo de PascuaEvangelio Ilutsrado, 4º Domingo de Pascua
Evangelio Ilutsrado, 4º Domingo de Pascua
 
Tefa
TefaTefa
Tefa
 
CDW and You
CDW and YouCDW and You
CDW and You
 
How Amazon Echo can be helpful for the healthcare industry
How Amazon Echo can be helpful for the healthcare industryHow Amazon Echo can be helpful for the healthcare industry
How Amazon Echo can be helpful for the healthcare industry
 
Mood Board And Sketches
Mood Board And  SketchesMood Board And  Sketches
Mood Board And Sketches
 
2008 cafe tirana
2008 cafe tirana2008 cafe tirana
2008 cafe tirana
 
01.การกระจายเชื้อเพลิงและแผนpdp
01.การกระจายเชื้อเพลิงและแผนpdp01.การกระจายเชื้อเพลิงและแผนpdp
01.การกระจายเชื้อเพลิงและแผนpdp
 
Neuroversum - Produktinformation
Neuroversum - ProduktinformationNeuroversum - Produktinformation
Neuroversum - Produktinformation
 
Decimales: Valor Posicional
Decimales: Valor PosicionalDecimales: Valor Posicional
Decimales: Valor Posicional
 
Webwriting That Works
Webwriting That WorksWebwriting That Works
Webwriting That Works
 

Similaire à Javascript Apps at Build Artifacts

MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
Stuart Lodge
 

Similaire à Javascript Apps at Build Artifacts (20)

Mobile native-hacks
Mobile native-hacksMobile native-hacks
Mobile native-hacks
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
8 Principles for Enabling Build/Measure/Learn: Lean Engineering in Action
 
Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
How I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScriptHow I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScript
 
Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8
 
Building a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one weekBuilding a full-stack app with Golang and Google Cloud Platform in one week
Building a full-stack app with Golang and Google Cloud Platform in one week
 
Lunch and learn as3_frameworks
Lunch and learn as3_frameworksLunch and learn as3_frameworks
Lunch and learn as3_frameworks
 
Fewd week4 slides
Fewd week4 slidesFewd week4 slides
Fewd week4 slides
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
 
MvvmCross Seminar
MvvmCross SeminarMvvmCross Seminar
MvvmCross Seminar
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe(In)Security Implication in the JS Universe
(In)Security Implication in the JS Universe
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
BlackBerry 10 Browser
BlackBerry 10 BrowserBlackBerry 10 Browser
BlackBerry 10 Browser
 
HTML5 Can't Do That
HTML5 Can't Do ThatHTML5 Can't Do That
HTML5 Can't Do That
 
The Gist of React Native
The Gist of React NativeThe Gist of React Native
The Gist of React Native
 
Devfest09 Cschalk Gwt
Devfest09 Cschalk GwtDevfest09 Cschalk Gwt
Devfest09 Cschalk Gwt
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Dernier (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

Javascript Apps at Build Artifacts

  • 1. CLAY SMITH Javascript apps as a build artifact clay@pagerduty.com @smithclay May 6, 2014 at EmpireJS
  • 2. This is my brain on Javascript.
  • 3. From the “Javascript Development Workflow” talk Understanding it all (from @paulirish)
  • 4. Easy answer: We’re using Javascript written for the web more and in different places. Why does it matter? From 4/13 to 4/14, httparchive.org
  • 5. Now for a 5-minute Overview of the Raging Javascript Battles of Today
  • 6. Javascript Battlefield #1 (2010-present) “My framework is better than yours.” http://en.wikipedia.org/wiki/Comparison_ of_JavaScript_frameworks
  • 8. “I prefer to write in _____(A)______, it makes creating _____(B)______ easier.” (*)script Battlefield #3 (2010-present) Coffeescript ClojureScrip t Dart TypeScript asm.js GWT dogescript A B web apps mobile apps frameworks nodebots arduinos much wow
  • 9. Javascript Battlefield #4 (2012-present) “My dependency management tool is better than yours.” bower component.js favorite package: https://www.npmjs.org/package/debowerify
  • 10. The easiest way to have a 30-minute conversation at a Javascript conference. We’ve all chosen sides. • Many Javascript libraries for a web app. • Many dependency managers for libraries. • Build tools that use dependency managers (written in JS or another language). • Many dependencies of the build tools (that might use another dependency manager) • Many source languages. • Many different types of target platforms.
  • 11. “Just the essential libraries” A single-page Javascript application c. 2014 PagerDuty Mobile, https://m.pagerduty.com
  • 12. Here’s the ones PagerDuty uses with gulp. Plugin-ify your JS build tools (2012-present)
  • 13. When you realize you need to make it work in mobile web views.
  • 14. A JavaScript apps running in mobile web browsers or embedded in native apps. The mobile (web) frontier (2007-present)
  • 15. Put all the things in git (or any VCS) Attempt #1 • well understood workflow (just commit!) • “easy” mobile builds - git clone to see JS source • git submodule purgatory (whoops, I forgot!) • merge conflict hell (Pull Requests broken) • compiled, concatenated, transformed code in VCS (not good) Good: Bad:
  • 16. Some cool kids are doing it. This is a popular approach for many JS libraries
  • 17. Well… how about using ? Attempt #2 • well-understood workflow (npm install FTW) • represents an ideal of JS dependency management • gives us a way to avoid git submodules and get *.min.js files out of source control
  • 18. kudos: npm mentions it in the docs “The advantage of doing [compilation, transformation, etc] at prepublish time instead of preinstall or install time is that they can be done once, in a single place, and thus greatly reduce complexity and variability. Additionally, this means that: You can depend on coffee-script as a devDependency, and thus your users don't need to have it installed.” https://www.npmjs.org/doc/misc/npm-scripts.html Warning! May not do what you expect! https://github.com/npm/npm/search?q=prepublish&ref=cmdform&type=Issues
  • 19. (Since we were working with private code) npm module from private github repo (we cheated and tried to use git) ^ package.json in our XCode project that pulls our JS app code
  • 20. npm that pulls a package from git didn’t get us all the way there Sadly… • we need to check in the transformed JS code (and css, and HTML) • we introduce lots of complexity into (native) builds processes. XCode suddenly needs to know how to gulp (or grunt). If we want simple native application build…. If we don’t want to check in transformed code…
  • 21. Overly simplified misleading diagram. Is there another way?
  • 22. build artifact (n) - one of many kinds of tangible by-products produced during the development of software. Our production JavaScript app looks like a build artifact
  • 23. Build artifacts are happiest in build artifact repository managers. The app needs a home
  • 24. Github Release API as a pseudo-artifact repository Attempt #3 - success! • A “release” in GitHub is just a tag and an collection of binary blobs stored on S3. • API Access Only (need to generate a token). • simplifies native mobile builds (only curl and unzip required).
  • 25. Uploading a ZIP archive with a single index.html to GitHub’s Release API
  • 26. No (gulp||grunt) plugin? Stream-ify it. The node.js streaming API is incredible.
  • 27. Then, add a build step in XCode/Android Studio that fetches build artifacts ^ Thanks to @alperkokmen
  • 28. Is there (or should there be) a better tool out there? It’s a decent option for hybrid apps * Sonatype Nexus -> NPM bridge https://issues.sonatype.org/browse/NEXUS-5852 * Private NPM/“CommonJS Repositories” that are optimized for build artifacts? * [insert your solution here]
  • 29. https://pagerduty.com Thank you. Clay Smith clay@pagerduty.com @smithclay Don’t check-in *.min.js files please. http://blog.pagerduty.com/2014/05/reliable-mobile- build/