---
title: "The state of JS package management, 1 million npm packages, and new JS features"
publication: "JavaScript Weekly"
issue: 440
published_at: "2019-06-07"
canonical_url: "https://javascriptweekly.com/issues/440"
---

This week's JavaScript news       

#440 — June 7, 2019 

[Read on the Web](https://javascriptweekly.com/issues/440)   

JavaScript Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/v1559924926/ulfizkml5yrbnn8bms4o.jpg)](https://github.com/ceejbot/economics-of-package-management/blob/master/essay.md)   

[On the Economics of Package Management](https://github.com/ceejbot/economics-of-package-management/blob/master/essay.md) — An essay version of C J Silverio’s [talk from JSConfEU ▶️](https://www.youtube.com/watch?v=MO8hZlgK5zc) (watch it if you have 35 minutes to spare). She was ousted as CTO of npm, Inc. last year but is back with a history of the JavaScript package ecosystem, a discussion of who really ‘owns’ it, and a suggestion for a new way forward oriented around [Entropic](https://github.com/entropic-dev/entropic), a new, agnostic, federated package registry. 

C J Silverio   

[Several New JS Features are Getting Closer with 'Optional Chaining' Now at Stage 2](https://github.com/tc39/proposal-optional-chaining) — New JavaScript features go through [various stages](https://tc39.es/process-document/) before they become official and this `?.` operator to let you make chained property or function calls optional has taken another step forward. In related news, [Array.isTemplateObject](https://github.com/tc39-transfer/proposal-array-is-template-object) has also just gone to stage 2, [top-level `await`](https://github.com/tc39/proposal-top-level-await) to stage _3_, and `BigInt` is now at stage 4. 

Ecma TC39   [![\](https://copm.s3.amazonaws.com/ff16d8a7.jpg)](https://frontendmasters.com/courses/complete-react-v5/?utm_source=jsweekly&utm_medium=email&utm_campaign=reactv5) 

[⚛️ The NEW Complete Intro to React... Now, with Hooks](https://frontendmasters.com/courses/complete-react-v5/?utm_source=jsweekly&utm_medium=email&utm_campaign=reactv5) — Much more than an intro, you’ll build a real-world app with the latest features in React including 🎣 hooks, effects, context, and portals. 

Frontend Masters sponsor   

[Are Long JavaScript Tasks Delaying Your 'Time to Interactive'?](https://web.dev/long-tasks-devtools/) — Chrome DevTools can now visualize ‘Long Tasks’ (code that causes the main thread to freeze, breaking the user experience) making it easier to debug and optimize away any problems. 

Addy Osmani   

[Switch from Medium to Your Own Blog in a Few Minutes](https://github.com/mathieudutour/medium-to-own-blog) — Would’t it be _great_ if more people we linked to were using their own blog instead of Medium? (Yes.) [Here’s an example](https://mathieudutour-blog.netlify.com) of the end result, but you can tweak it to your own tastes. 

Mathieu Dutour   

[Just Write Code: Cloudflare Improves the Developer Experience of their Workers Serverless JavaScript Platform](https://blog.cloudflare.com/just-write-code-improving-developer-experience-for-cloudflare-workers/) — _Workers_, Cloudflare’s globally distributed serverless platform, gets a CLI developer tool, the ability to run apps on [workers.dev](http://workers.dev/) without using your own domain, new docs, and a free tier to make it easier to try it out. 

Rita Kozlov (Cloudflare)     

**Quick bytes:** 

- There are now [1 million npm packages.](https://snyk.io/blog/npm-passes-the-1-millionth-package-milestone-what-can-we-learn/)
- GitHub has added [support for using GitHub repos as 'repository templates'.](https://github.blog/2019-06-06-generate-new-repositories-with-repository-templates/) Mark a repo as a template and then it can be used to quickly generate _new_ repositories. Could be handy for boilerplate projects.
- At this week's WWDC event, Apple [unveiled the forthcoming new Mac Pro](https://www.apple.com/mac-pro/) and it's a _beast_ of a machine. You'll need incredibly deep pockets, however.
- The [npm Security Team foiled a plot to steal cryptocurrency](https://blog.npmjs.org/post/185397814280/plot-to-steal-cryptocurrency-foiled-by-the-npm) via a malicious package.   

💻 Jobs  

[JavaScript Developer at X-Team (Remote)](https://x-team.com/remote-javascript-developer-jobs/?utm_source=cooperpress&utm_medium=email-ad&utm_campaign=js) — Join the most energizing community for developers. Work from anywhere with the world's leading brands. 

X-Team   

[Front End Engineer (Manchester, UK)](https://capsulecrm.com/jobs/position/javascript_developer/) — Join our friendly team creating beautiful applications loved by customers around the world. Excellent work/life balance & benefits. 

Capsule   

[Land a New Dev Job on Vettery](https://www.vettery.com/tech?utm_source=newsletter&utm_medium=cooper-javascriptweekly&utm_term=tech&utm_content=grouped&utm_campaign=ad-77584) — Vettery specializes in tech roles and is completely free for job seekers. 

Vettery  

📘 Tutorials, Opinions, and Videos  

[8 Useful JavaScript Tricks](https://devinduct.com/blogpost/26/8-useful-javascript-tricks) — You all seem to love a good list’o’tips article, and this one is not bad at all, particularly if you consider yourself at beginner to intermediate level. 

Milos Protic   

[Unpacking Hoisting](http://2ality.com/2019/05/unpacking-hoisting.html) — _“Hoisting is old and confused terminology,”_ said Allen Wirfs-Brock recently. Dr. Axel has some ideas on how to better think about declarations. 

Dr. Axel Rauschmayer   

[Automate Your Code Reviews](https://lp.codacy.com/code-review?utm_source=CooperPress&utm_medium=cpm&utm_campaign=CooperPress-JavaS&utm_term=%7Bkeyword%7D&utm_device=%7Bdevice%7D) — Codacy flags errors in your code so you can fix them quickly, directly from your current workflow. Get started today. 

Codacy sponsor   

[Best Practices for Building a Large Scale React App](https://buttercms.com/blog/best-practices-for-building-a-large-scale-react-application) — A few concepts worth keeping in mind to make neater, larger scale apps over time. 

Aman Khalid   

[How to Render a Dynamic Tree Diagram with SVG and Vue.js](https://medium.com/@krutie/building-a-dynamic-tree-diagram-with-svg-and-vue-js-a5df28e300cd) — What’s involved in creating a dynamic tree diagram using cubic bezier curve paths and Vue for data reactivity. 

Krutie Patel   

[An introduction to the MediaRecorder API](https://www.twilio.com/blog/mediastream-recording-api) — The MediaRecorder API is a browser API that you can use to record audio and video in the browser. Here’s how. 

Phil Nash (Twilio)   

[How To Use jQuery With Angular (When You Absolutely Have To)](https://blog.bitsrc.io/how-to-use-jquery-with-angular-when-you-absolutely-have-to-42c8b6a37ff9) — For, like, when you _really have to_.. as _“when it comes to integrating jQuery in Angular, things get a little weird.”_ 

Aditya Modi   

[Angular 8: A Brief Summary of What's New](https://alligator.io/angular/angular-8/) 

Alligator   

[Building Web Apps with MERN Stack and Google Cloud Platform](https://www.mongodb.com/presentations/building-web-apps-mern-stack-google-cloud-platform?p=5cd4e689e5e7bb88c2a155c5?jmp=cpress&utm_campaign=WW_CP_newsletter_sponsorship&utm_content=20190607&utm_medium=display&utm_source=javascriptweekly) 

MongoDB sponsor   

[Enabling Modern JavaScript on npm](https://jasonformat.com/enabling-modern-js-on-npm/) — Modern JavaScript syntax lets you do more with less code, but how much of the JavaScript _we ship to users_ is actually ‘modern’ and are we transpiling too much? 

Jason Miller  

🔧 Code and Tools  

[PixelMatch 5.0: The Simplest and Fastest Pixel-Level Image Comparison Library](https://github.com/mapbox/pixelmatch) — Give it two images, it’ll highlight the differences. 

Mapbox   

[Nerv: A Fast IE8- and React 16-Compatible React Alternative](https://github.com/NervJS/nerv) — Nerv bills itself as a tinier, faster React alternative that supports modern React 16 features. v1.4.0 just dropped. 

Li Weitao   

[inline-loops.macro: A Babel Macro to Inline Iterators to Native Loops for Performance](https://github.com/planttheidea/inline-loops.macro) — Provides methods like `map`, `reduce` and `find` and compiles these down to allegedly faster loop-driven alternatives. 

Tony Quetano   

[Get Reliable JavaScript Tests with Gauge and Taiko](https://taiko.gauge.org/?utm_campaign=js_weekly&utm_medium=email&utm_source=js_weekly&utm_content=gauge-home&utm_term=) — New open source test automation framework by ThoughtWorks. 

Gauge sponsor   

[Pinker.js: A Library for Rendering Code and Class UML Diagrams](http://withouthaste.com/pinker/index.html) 

Without Haste   

[PDFKit: A PDF Generation Library for Node and The Browser](https://github.com/foliojs/pdfkit) 

GitHub   

[tinydate: A Tiny and Fast Reusable Date Formatter](https://github.com/lukeed/tinydate) — e.g. `tinydate('Current time: [{HH}:{mm}:{ss}]')` .. which returns an object you can call at any time (or supply a time of your own to format). 

Luke Edwards   

[ms: Tiny Millisecond Conversion Utility](https://github.com/zeit/ms) — For example: `ms('2 days')` returns `172800000`. A new version has just dropped fixing some bugs. 

ZEIT         

Curated by [Cooperpress](https://cooperpress.com/) and [Peter Cooper](https://twitter.com/peterc). 

'JavaScript' is a trademark of Oracle Corporation in the US
We are not endorsed by or affiliated with Oracle. 

[Change your email address](https://javascriptweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://javascriptweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
