Thoughts on importing npm modules to the web as JavaScript modules

Ich habe Gedanken über die Post, die ich gestern über ES-Module geschrieben habe

I needed a quick way import a simple module get-urls into my project. The module is well tested and it does what I needed … ignore the fact that it’s pretty easy to implement in a couple of lines of JavaScript. The problem I had is that my project is built in ES6, uses modules and I didn’t want to have to bundle up using CommonJS (require).

I couldn’t find a lot of guidance on what to do here, so I went to experiement and this solution is the solution I came across:

  1. Create a file that imports the npm module I needed. module.exports = require('get-urls'); This module will be what’s converted to ES6 style.
  2. Create a rollup config that
    1. Imports the node globals, and builtins.
    2. Resolves all npm modules required for my usage of this module.
    3. Pass the results through the commonjs plugin so that it’s now in JavaScript module format.
    4. Compress the output, because it’s huge :
  3. Include the bundled file in your project and rejoice.

Ganzen Beitrag lesen.

Eines der Dinge, die ich im Originalartikel versuchen und artikulieren wollte, aber ich entschied mich herauszuziehen, dass es im Knoten-Ökosystem eine riesige Menge an Code gibt, der nicht wirklich spezifisch für Node ist, aber eng mit ihm verbunden ist Knoten über Common JS und andere sehr spezifische Knoten-APIs (Puffer, alte URL usw.), dass es sehr mühsam sein wird, sich hochzuziehen und somit die Änderung erforderlich wird, um ES-Module allgegenwärtig zu machen, wird potentiell ziemlich schmerzhaft sein und bis Angesichts der Änderungen im Ökosystem müssen wir viele Conversion-Tools und Bundler einsetzen, um Code auf mehreren Plattformen (Web / Server) sauber zu teilen.

Wir sind dort, wo wir sind, es gab keine importierende Geschichte im Web, wir hatten keinen Haufen der Primitiven, die Node eingeführt hat, und sind jetzt, was viele jetzt für De-facto-Plattform-Anforderungen halten würden, also hoffe ich, dass dies so ist eher eine Anerkennung der Situation als eine Kritik.

Es gibt auch einen Schritt zur Verwendung von '.mjs' als Dateierweiterung, die sowohl für den Knoten als auch für das Web Standard ist. Ich fühle mich jedoch vollkommen wohl dabei. MSJ ist keine Datei, die irgendeine Infrastruktur als "Text / Javascript" erkennt und ich freue mich darauf, dass sie so sortiert wird, dass sie automatisch von jedem Webserver auf dem Planeten erkannt wird Ich muss nicht noch mehr Konfigurationsänderungen an meiner Server-Infrastruktur vornehmen.

Viele lustige Zeiten voraus, ich für meinen Teil freue mich darauf, viel mehr Funktionalität ins Web bringen zu können.

About Me: Paul Kinlan

I lead the Chrome Developer Relations team at Google.

We want people to have the best experience possible on the web without having to install a native app or produce content in a walled garden.

Our team tries to make it easier for developers to build on the web by supporting every Chrome release, creating great content to support developers on web.dev, contributing to MDN, helping to improve browser compatibility, and some of the best developer tools like Lighthouse, Workbox, Squoosh to name just a few.