Isaac Schlueter - npm, Tier
Durée: 81m35s
Date de sortie: 13/11/2023
This week we talk with Isaac Schlueter, a founder at npm and Tier. We talk about the creation of npm, the early days of node, and the transition from CJS to ESM in node. We delve into the challenges of running a package registry (and a company) and his new company Tier. Tier is building a new way to define pricing for your products.
- https://github.com/isaacs
- https://www.tier.run
- https://node-tap.org
- https://fosstodon.org/@isaacs
- https://twitter.com/izs
Episode sponsored By Raycast (https://www.raycast.com/)
Become a paid subscriber our patreon, spotify, or apple podcasts for the full episode.
On a vu ce que le système de JavaScript n'a pas l'air facile de utiliser,
le manager de package, et ce n'est pas si bon.
Ce n'est pas si bon que ça ne se débrouille rapidement,
ce n'est pas si bien que la innovation.
Ce n'est pas une option.
Donc, la autre option est de payer pour ça en un coup.
Et c'est comme, ok, on n'a pas des milliers de milliers de dollars par mois
que je peux expérimenter sur cette chose.
Donc, je pensais, ok, on va...
Probablement on pourrait faire un moyen de faire du ménage avec cette chose.
On va commencer une compagnie et peut-être que la compagnie peut continuer à la faire.
Et c'est ce que nous avons fait.
Bonjour, bienvenue au WebTools FM Podcast.
C'est un podcast sur les tools de développement et les gens qui les font.
Je suis Andrew et c'est mon co-host Justin.
Salut tout le monde.
Aujourd'hui, nous sommes incroyablement excitées à avoir Isaac sur le podcast.
Donc, vous savez Isaac comme le founder de NPM, former...
Un de les formes...
Vous êtes le dédictateur du défi pour la vie un peu pour la note.
Comme, en les dernières jours.
Ça se termine pour la vie, c'est seulement un couple de ans.
Une vie de plus? Un peu plus?
Oui.
Pour un peu plus, c'est ce que l'EL se fait.
Isaac, nous sommes incroyablement excitées et humbles à avoir vous sur le podcast.
Nous avons beaucoup touché les deux de nous.
On a évidemment eu beaucoup d'interactions avec NPM.
C'est été assez pivotable et pour les deux de notre career.
Donc, vraiment, vraiment excitées à avoir vous sur le podcast.
Avant de nous parler de plus de choses,
est-ce que vous voulez parler de nous?
Non, je pense que ça se couvre les rares blocs.
C'est une bonne fin.
On va en avoir plus de choses.
Oui, absolument.
Ça fait grand.
Oui, donc avant de nous changer de ce que vous avez fait au présent.
Je veux toucher sur le passé un peu,
juste parce que, comme Justin a dit,
NPM et Node, je ne pense pas que je serai dans ma career,
où je serai dans ma career sans les deux choses.
Le plus grand package NPM que j'ai,
est un tool automatique de relance qui est construit au-dessus de l'assemblée.
Donc, beaucoup de lait de Isaac,
tout au long de ce projet.
Donc, vous avez vu le projet Node de la première.
Je veux juste avoir un peu d'une perspective
de ce que c'était comme à la première.
Et vous pensez que c'était comme ce genre de
industrie de la fin de la chose à la première?
Et oui, comment ça se sent maintenant?
Donc, à la première, je suis allé dans la Node,
quand j'ai fait un service,
j'ai dit qu'il y avait un peu de différentes
explorations, idées et tout,
qui ont été parmi les choses.
Et surtout, c'est parce que j'étais fier
d'avoir une bonne paix de PHP sur le service
et de JavaScript sur les clients.
Et je me suis dit que je ne peux pas.
N'importe quoi, c'est comme particulièrement
de bonnes langues par exemple.
Mais, au moins, si je pouvais juste avoir
un de ces langues, ça serait peut-être
un peu plus facile de ma vie.
Donc, j'ai commencé à être en train de faire un service
sur le service JS.
Il y avait un groupe qui s'appelle
le service JS,
qui a été créé en plus tard,
un commun JS,
parce qu'ils ont incorporé
les gens qui travaillent
sur la plateforme d'extensions
de Firefox.
Et j'ai voulu impliquer
beaucoup de ces API.
Donc, je suis allé avec un sort
d'une libraire standard, qui était l'idée
que toutes ces différentes implementations
étaient utilisées.
La assumption était toujours que,
culturellement, en JavaScript,
nous avons beaucoup d'implementations
et ils interopérent et compitent
pour les mineshairs,
avec les webbrowsers, et c'est
généralement, je ne sais pas,
mais c'est un peu compliqué.
oui, donc,
node s'est créé
et ça a vraiment
évoqué beaucoup de choses,
parce qu'il y avait beaucoup de choses
dans le commun JS,
des discussions et des spécifications
qu'ils se sont créées,
qui n'avaient pas vraiment
le sens dans un environnement
asynchroniste, un environnement ventier.
Donc, des choses comme
les APIs et les réseaux,
les APIs et tout,
qui sont assis que vous allez en un contexte
de thread, ou un contexte de synchronisation,
qui, si vous vous implementez
sur le JVM,
c'est le plus sensible
de la façon dont vous allez,
la plus straight forwarde de la façon dont vous allez.
Donc, node s'est créée,
et c'est le truc qui a
vraiment empliqué,
c'est que ça sentait comme un JavaScript,
comme ça ne sentait pas comme un langage,
ni si bien,
comme beaucoup d'autres
plateformes communes,
comme vous avez fait en writing Java
ou C, mais
avec un syntaxe JavaScript.
Et donc, oui, je suis super
entrainé, et je suis très clair
que si il y a un nombre
de runtimes sur le
JS,
ça va probablement se passer.
Il y a eu un couple d'autres,
il y a eu un nombre de runtimes
sur le JavaScript,
et Netscape a
un live server
et
il y a eu un couple d'autres
fourres, il y a eu
quelques passes
à la fois.
Microsoft active server pages,
vous pouvez en faire un J-Script,
donc, non de ce que c'est
comme une nouvelle idée, mais
la chose qui était intéressant c'était
que c'était envers le JVM,
et que ça s'est orienté, et c'était
java-script.
Sans inquiétant que vous
artificiellement constrime votre
programme dans cet effet
style d'objectif.
Avec active server pages
et J-Script vous avez un script
run at equal server, et vous
vous mettez votre code JavaScript dans ça.
Comment utiliser ça
pour Write un programme
que vous n'aurez pas
un file J-Pag et qu'il compresse
ou change de ... ou quoi qu'of bowling.
GitHub est tellement synonyme avec les requêtes de poste.
Maintenant, les gens oublient qu'il y avait un GitHub avant qu'il y avait des requêtes de poste.
Mais la plupart des activités autour de Node, dans ces dernières jours,
ont été faites sur une liste de maîtrise Google,
qui est encore archébillée dans les groupes Google, si vous voulez aller faire une histoire de recherche.
Et pendant un temps, il y avait des dozens de personnes d'une seule digite,
qui étaient intéressées à la Node.
Et ils ont fait des choses intéressantes, et ils se disent qu'ils ont publié ce module,
et que ça fait un X, un Y, un Z, et que, en orderant d'installer ça,
vous devez faire un repos pour le repos, et ensuite faire un Make.
Et puis ça dépend de ce qu'il y a,
donc vous devez vérifier le module sub et construire le module,
et puis faire un copier dans ce endroit.
Et ça fonctionne bien si vous le déploiez dans un certain file.
C'est comme...
Je voulais construire des vrais choses avec ça.
Donc, ça a fait de l'essentier beaucoup de personnes de la code,
et de jouer avec des choses qui étaient en train de faire.
Et ça a été vraiment un défi.
Donc, j'ai commencé...
Il y avait quelque chose dans le JS.
L'équipe de l'investigation.
C'était comme le spectateur de packages.
Et donc, j'ai écrit une implementation de ça.
Ça a dévié assez bien, en fait.
Ça n'a pas vraiment l'air de compliquer avec le JS.
C'est parce que j'ai eu beaucoup de choses dans ça,
que je n'ai pas pensé que c'était une bonne idée,
ou que ça n'a pas fait du sens dans une Node contexte.
Et la main chose que j'ai voulu assurer,
c'est que si nous pouvions éviter cette sort de hell de dépendance,
la hell de dépendance, comme c'est connu en 2010 ou 2009,
qui est différente de ce que les gens disent quand ils disent la phrase « maintenant ».
La meaningful est vraiment changée.
Ce qu'il y a, c'était comme...
Je dépend de module X,
et le X dépend de module Y, en quelque version.
Et puis, un peu tard, je installe module Z,
qui dépend aussi de module Y,
mais c'est une autre version de module Y.
Je n'ai jamais entendu de Y.
Je ne sais pas pourquoi c'est mon stack.
Je ne sais pas ce qu'il fait là.
Mais il me dit...
Je me suis rendu beaucoup en travaillant sur Yahoo.
C'est comme la bain de ma existence.
Parce que pour tout le monde,
j'ai terminé en étant le manager de la package,
le gars de ToolSmith qui était en charge de notre build script,
et en faisant le tout,
ce qui est bizarre, parce que je suis aussi un développeur en france.
Mais quelqu'un a dû faire ce travail.
Et donc, on aurait pu modifier quelque chose.
Et ça serait comme...
Oh, Lib, NICU, SSI...
Vous ne pouvez pas upgradeer ce module de PHP random,
parce que ce autre chose que vous n'avez jamais entendu,
c'est des conflits avec cette version différente.
Je serai comme...
combiner le graph de la dépendance
pour savoir ce que la résolution est.
Et juste dire,
« Ce sont les computers qui ont fait ça pour moi. »
C'est terrible.
Donc, avec NPM,
vraiment, depuis le début,
je suis sûr que,
si vous avez deux versions de conflits différents,
dans la foule, c'est bien.
Il va juste se mettre dans ce espace isolé.
Et chaque chose va avoir la version de toutes les dépendances
que ça peut travailler avec.
Et tout est bien.
Donc, ce que ça a fait,
ce qui est vraiment intéressant,
c'est que vous réduisez la friction...
En faisant ça,
vous réduisez la friction pour utiliser les dépendances.
Parce que, pourquoi pas ?
La seule raison que vous le vous réduisez,
c'est que,
les plus de dépendances que vous avez,
le plus difficile c'est de l'installer.
Vous avez retiré cet obstacle.
Et, très rapidement,
ce que nous avons vu,
c'est que le module a un petit et un petit.
Parce que,
d'accord, pourquoi pas ?
Qui le cares ?
Ce n'est pas un conflit.
Si ça le fait,
il va juste mettre un autre.
Ce n'est pas un grand deal.
Et les dépendances que les gens ont pu faire,
ces listes ont plus et plus de résultats.
Parce que chaque chose est plus petit et plus petite.
Et donc,
plutôt que de l'un des grands dépendances de la cuisine,
qui a tout ce qu'il pourrait en avoir besoin,
comme vous le voyez beaucoup dans les langues,
les rondeaux,
dans Maven,
dans Parre,
dans Cpan,
c'est assez commun.
Nous avons terminé en état où nous avons des modules
comme IsOn,
qui est un dépendance de l'on,
IsEven,
qui est un dépendance de l'on,
IsNumber.
C'est comme,
c'est l'exemple absurde,
mais il y a moins d'exemples absurde
que les autres rondeaux.
Donc,
maintenant,
ce que les gens disent quand ils disent que les dépendances ont plus de dépendance,
mais c'est comme,
oui,
mais ils l'ont tous fait.
Et vous n'avez pas dû en voir.
C'est comme,
vous êtes juste complémenté,
parce que c'est trop facile,
c'est le problème.
C'est,
vous êtes bienvenue.
Oui,
donc,
je pense que,
oui,
j'ai commencé à envoyer des gens des requêtes pour ajouter
les files de Jason
dans leurs packages,
et ils l'ont appris très rapidement.
Il y avait un couple d'autres managers de packages
que les gens avaient sorti de la chute ensemble,
et je pense que la principale différence avec NPM,
c'est pas que c'était mieux,
c'est que j'ai quitté mon travail pour travailler sur ça.
Donc,
il y avait quelqu'un qui a fixé les bugs.
C'est ça.
C'était le feature de killer.
Et,
oui,
et puis,
et puis,
quand ça a pris l'air,
ça a terminé,
plus ou moins,
en taking on a la vie de sa propre.
Tout le monde a utilisé pour tout.
Je me demande,
en retrospect,
de regarder en regard des décisions d'arrivée
et de la façon dont le système de note
et NPM ont évolué.
Est-ce que tu penses que tu aurais fait des décisions
un peu différentes à ce moment?
Bien sûr,
oui,
ils sont définitivement.
Je pense que,
je l'ai mentionné,
il y avait un
même souci de voir
les dévus,
c'est comme,
c'est comme,
tu sais,
ton grand souci,
que tu as jamais pu faire.
Et je l'ai mentionné,
oui,
mon meilleur souci,
qui a été mis à la production,
et qui n'a pas été réveillé
pendant six ans,
c'était
que,
et ça a fait un sens parfait
à l'heure de la période,
c'est comme un système de crède,
si tu peux,
si tu peux le faire,
tu devrais pouvoir le délire.
Ça fait du sens.
Et,
donc,
tu pouvais,
NPM,
évoluer un package.
Et,
ce n'était pas un problème,
c'était tout de suite un problème.
Je suis sûr que
les gens ont entendu de l'Effad.
Ce qui est intéressant,
c'est que,
même si,
très rapidement,
on a fermé
ceci,
quand ça s'est passé,
on a vu un grand,
juste un grand,
qui a causé,
et on a réalisé,
ce n'est pas,
packages sur NPM
n'est pas juste
un project de l'Hack,
c'est un système d'éco-systeme,
et ces choses sont interdependentes,
si tu peux juste
le faire,
quelque chose de l'enquête,
c'est un peu
un peu de façade,
pour beaucoup de gens.
Donc,
on a réalisé,
ce n'est pas juste
un package,
il y a encore des cas
où tu peux
le faire.
Si ça n'a pas de dépendances,
et
quand le public
a été fait
depuis les 24 heures,
et,
et,
je me suis dit,
et ils disent,
oh,
je suis prêt à le donner,
je vais le donner,
et je vais essayer de le faire,
et je suis dit,
non.
Il y a quelqu'un qui veut ça.
Oh,
n'a pas entendu de ça.
Il n'a pas existé
5 minutes auparavant.
Mais oui,
je pense que,
je pense que,
en faisant
le NPM de la industrie,
appends seulement,
strictement,
appends seulement.
Si tu as mis un secret,
c'est trop mal,
c'est trop mal.
C'est pas mal,
c'est trop mal,
de toute façon.
Parce qu'il y a des
lignes en bas,
qui ne
ne respectent pas
les élèves.
Donc,
c'est un
grand truc qui a été fait différemment.
Je pense que,
d'ailleurs,
non,
toutes les mauvaises décisions
étaient d'autres personnes.
Oui,
c'est cool de voir que,
je
m'en souviens,
avec le
gars de la frontière,
que,
pour un certain raison,
c'est juste
en faisant le tour,
et en faisant l'infraire,
juste parce que tu as
l'expérience,
et tu l'as fait beaucoup,
et ça
vient de vous.
Et c'est aussi super intéressant
pour moi,
que
tu as entouré
tout ça,
et nous avons
fait le premier
tour de la dépendance,
et nous sommes dans le second niveau.
C'est drôle que les gens,
ne vont pas même,
comme,
ils auraient probablement regardé
la première dépendance,
et se dire,
oh,
c'est pas
que difficile,
vraiment,
c'est un problème
plus
d'inquiétés.
Tu es juste
essayant de installer
quelques dépendances
et de les faire travailler ensemble.
Maintenant,
le problème est
que nous essayons d'installer
des milliers
et de les travailler ensemble.
Donc,
nous avons
bien étendu
le jeu beaucoup.
Oui,
je pense que
maintenant,
c'est juste un problème de tour,
non,
c'est juste
votre code
que
il faut se prévoir.
Je pense que,
aussi,
en hindsight,
je n'ai pas compris
à l'heure,
je n'ai pas fully compris
à l'heure,
juste
ce qui est un pain massive,
que les dépendances de la dépendance
soient.
Les dépendances de la dépendance,
en cas que les gens
ne l'ont pas fully compris,
c'est un
moyen de dire,
je dépend de ce pas,
mais
je ne l'utilise pas directement,
mais si tu utilises mon truc,
tu dois l'utiliser
avec
cette version
de ce autre truc.
Donc,
une compagnie de réaction
qui ne fonctionne que
avec le réact 18
et up,
ou quelque chose comme ça,
il ne faut pas
avoir une dépendance
sur le réact.
Si tu installes
une version
différente
dans son détail,
ça ne devrait pas fonctionner.
Le point est
que ça devrait travailler
avec ce autre truc.
Et
oui,
à l'aise de la vue,
ça peut vous donner
une première règle
de la dépendance de la santé.
Si je installe deux choses
qui ont une dépendance
de la dépendance de la santé,
elles ne peuvent pas être installées
ensemble
à la même niveau
dans le traitement.
Il a été fait
jusqu'à la fin de la séance de la
NPM7
qu'on a eu l'implementation
de cette
réaction
qui
réjolve
la dépendance de la santé.
Et le algorithme
pour le faire
est
un
récouru
pour un
travail ludicrice.
Il y a des choses
comme les pubs-subs,
comme les pubgrub,
et
des autres algorithmes
qui sont
assez efficaces
pour
en même temps
essayer de
avoir des
théories
pour résolver
certaines de ces
plus
difficultés
situations
qui arrivent
dans les graphes de la dépendance.
Mais
je pense que
à la fin de la journée,
c'est
un problème
de difficulté
comme
parfois
il faut être
je ne sais pas
humain,
tu as compris.
Ce week's episode
est de nouveau
sponsorisé par Raycast.
Raycast est un app
pour Mac
qui est comme un spotlight
mais un peu plus
plus bien.
D'ailleurs,
les choses comme
les files,
les URLs
ou les apps
peuvent faire un tout petit peu
de choses
que toutes les extensions
qu'ils proposent.
Une extension
que j'ai utilisé
beaucoup de temps
est
une autre utilité
qui réplique
un outil default
de ma Mac.
Donc,
j'ai besoin de
mon activité
de monite
beaucoup
pour les procédures
ou parfois
j'utilise la ligne de command
pour faire ça.
Mais c'est un peu de clics.
Donc,
j'ai rééloadé
Raycast
procédé de procédé
et maintenant
je peux
faire un procédé
très rapidement
sans vraiment
perdre contexte
ou avoir de clics
par les menus.
Tout pour mon outil
très rapidement
à mon workflow.
C'est à quoi
Raycast s'applique.
Mais Raycast
ne s'arrête pas.
Avec Raycast Pro,
vous avez l'accessoire
à Raycast AI.
Et,
je vais vous dire,
avoir l'AI
à vos fingertips
à toutes les fois
fait
beaucoup plus facile
d'utiliser.
Ce recours
a été
décédé
par mes co-workers.
Donc,
maintenant,
quand je hoppais
sur un call zoom
ou un huddle
je verrai
mes co-workers
poursuivre
leur
Raycast
en courant
à un chat
pour se résoudre
pendant qu'on travaille
par quelque chose.
Si vous voulez
apprendre plus
sur Raycast,
head over
to Raycast.com
ou si vous voulez
un plus
en-depth
à voir
ce que Raycast
est
et comment ils ont
regardé
où ils sont,
check out
Episode 38
où nous parlons
à Thomas,
le CEO.
Vous voulez
avancer
avec DevTools FM?
Head over
to devtools.fm
slash sponsor
pour appeler.
Aussi,
si vous n'avez pas
signé
pour notre newsletter,
vous avez
à la voir.
Il n'y a pas de place
pour se faire
à l'appeler
sur tous les nouveaux
épisodes.
DevTools
est en train de
mettre en place
tout le cool
news
de DevTools
qui se dévouent
week-à-week.
Et cette semaine,
nous avons
ouvert
notre Discord.
Vitez-nous.
Et avec ça,
on va
retourner
au épisode.
Je suis sûr
que vous avez
beaucoup d'autres
intéressants
stories de guerre
dans vos années
à l'OMN.
Qu'est-ce
que vous avez
à l'Effat?
Qu'est-ce que vous avez
le plus mémoré?
Vous savez,
une des choses
très dracques
de ne pas être
le founder
ou le CEO
ou
vous savez,
un peu de secrets
que vous avez
légalement
nécessaires
de ne pas
partager.
Mais vous pourrez
faire
vraiment bon content
si vous pouvez.
Je ne sais pas.
Donc,
je veux dire,
beaucoup de
ces
sont
sorties
si je voulais
essayer de
parler de la
histoire
de manière
qui
est
sanitisée
pour nos
références
ici,
ce n'est pas
super intéressant
et c'est
ce que vous pouvez
dire
juste par
regarder
l'opinion.
Je vais dire
une chose
qui est
vraiment
intéressante
qui n'est pas
appréciée
jusqu'à ce que je
già
fais un
test
a
眾
le
côté
b
les
Claudero
vraiment
rouleaux
H хорошо
mon
opinion
drié
de
le plus important.
C'est pas de dire que vous ne devriez pas être mal à la personne que la histoire vous
fait mal à.
Peut-être que vous devriez être beaucoup plus mal.
Mais souvent, ce qui se passe est que ces histoires, ces situations, ces choses,
sont utiles pour toutes les subtleties.
Ils sont sortis de la paquetsse dans l'approximation la plus proche que un rapporteur peut lui
faire pour les gens et un rapporteur peut râter leur tête et sortir dans une histoire de
bête de bête.
La plupart des fois, tout le monde s'intervient, c'est super mal.
Tout le monde est impliqué, tout le monde fait le meilleur, tout le monde
est en train de se faire très bien et de manière bien.
Tout le monde s'écrute et a des insecurities et des émotions et tout le monde
qui fait que les êtres humains sont mal.
Je pense que quelqu'un qui a été récent à cette position, qui n'est pas un
complet sociopathe, n'a pas de chacune sur le sociopathe et que les gens
doivent exister.
Un impossible, impossible, requirement là-bas.
Et le truc qui m'a fait me réaliser, c'est de passer par un couple de
bruts nouvelles, de nouvelles cycles, de l'NPM.
Et aussi de voir la whole IOJS, non JS, up close et de voir la
juste différence en public perception versus ce qui s'est passé.
Et comment les deux ne sont pas vraiment connectés.
Et les gens vont être mal à l'esprit pour quelque chose.
Et je suis comme, non, ce n'est pas le bon raison de être mal à eux.
Ce n'est pas que tu es mal à l'esprit, mais pour les raisons de l'esprit.
C'est ça que tu es mal à l'esprit, c'est une bonne chose qu'ils ont fait.
Et l'autre chose que je ne peux pas vous dire, c'est pourquoi je suis mal.
C'est ça.
Donc, c'était toujours le plus grand take-away.
Le grand « growing up » qui m'a réalisé que la histoire sur Twitter est faite.
Je ne pense pas que Twitter, en particulier, est une plateforme avec aucun nuance.
C'est constrainé par le design.
Et aussi, je pense que nous avons eu des décrétions de attention.
Même nos articles de nouvelles ne peuvent être plus petits et ne sont pas
en contact.
Je me sens que ces situations sont plus prominentes maintenant.
Je ne sais pas si je suis certain que c'est Twitter.
Je pense que nous avons été idiotes pour toujours.
Je le fais vraiment parce que même quand tu as plus de formes,
ou les situations où il y a des risques de discuter et de se faire entendre,
comme des articles de nouvelles actuales, ou des articles de nouvelles de rédits,
ou juste de rencontrer quelqu'un et de parler à eux.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
C'est un peu de la même chose.
En bloquage de jobbarité dans ce fashion.
En bloquage de Treaty,
élémentaire,
Et unlikely de l'union
parce que nous sommes déjà en train de faire des packages,
comme vous n'avez pas besoin d'un code modul,
slash express, slash lib slash index dot js.
C'est comme vous voulez juste pouvoir
faire des expressions et d'express.
Donc, en orderant pour que l'on
même commence à être possible, à être utile,
comme on avait besoin d'un moyen pour faire ça.
Et donc, le code
écosystème, ou le code loader,
a sorti beaucoup de temps en temps.
Et donc, sur les dernières, quoi, plus de 10 ans maintenant,
de l'intervention et de
des improvements graduels,
on est à un point où nous avons un loader
qui est en fait assez près de s'être
marqué en stabilité,
ou au moins, pas d'expérimental.
Et, oui,
donc, par exemple, pourquoi ne sommes-nous pas sur les termes de fin?
Parce que, on ne s'est pas sur les termes de fin
comme une communauté, parce que le projet n'est pas sur les termes de fin.
Mais, on ne s'est pas sur les termes de fin.
Le temps de fin n'est pas vraiment marqué
au S.M. comme
le temps de fin.
Même si c'est des parts qui sont,
c'est comme si c'était le temps de fin,
si vous voulez faire quelque chose avec ça,
si vous voulez pouvoir
rater votre code et avoir de la recette de code,
ou rater un type de script, ou tout ça.
Mais, en même temps,
le challenge avec l'expérimental des surfaces API
et des modes de recette,
c'est que si vous ne vous supportez pas très peu,
personne ne va l'utiliser.
Et donc, vous devez toujours fixer les bugs
et ne pas les débrouiller.
Mais, en même temps,
vous devez savoir que ce n'est pas final
et que ce sera un détail,
parce que vous ne pouvez pas le savoir
avant que vous l'étiez.
Donc, il y a un problème
sur le problème de l'expérimental
qui est un problème de l'expérimental.
Vous devez communiquer que quelque chose ne soit pas stable,
mais aussi vous devez les gens
sur le hurdle de l'utiliser.
Mais, en tout cas,
le problème qui est comme Python 3,
c'est que les packages qui sont rétendues en ESM
ne peuvent pas être bloquées avec require.
Ce qui veut dire que si vous avez des codes
qui ont besoin de chalk,
comme ça ne fonctionne pas avec la version la plus la plus la plus choc,
vous pouvez importer le chalk.
Et vous pouvez aussi importer des choses
qui ont besoin de chalk.
Vous pouvez aussi importer des messages.
Pourquoi ne pas juste écrire un message en commentaire
car ça ne peut pas être bloqué à tout point,
mais que ce soit pas le cas
de la transition.
Et aussi, les choses que vous importez
en commentaire,
les choses que vous importez en commentaire en ESM,
c'est un peu bizarre.
La forme de retour est un peu différente.
Ce n'est pas vraiment compatible
avec quelque chose comme Dino ou un web browser
qui ne peut pas être bloqué en ESM,
et qui ne peut pas être bloqué avec require,
au moins vous faites une partie de la transition.
Je sais, je dis que ce n'est pas un script de café,
c'est un type script.
D'autres typescripts,
le autre qui est le transpire
est des choses comme webpack et babel,
qui
massage les choses
dans les jas comms ou au jas comms,
essentiellement.
Pour l'utilisation des webbrowsers en mode respectivité.
Non, pas ça, c'est tout.
C'est un peu de la même chose.
Donc, oui,
l'un des choses que je pense que c'est
juste la façon que j'ai décidé de
aller en train de prendre la situation,
personnellement,
j'aime les ergonomies
de faire l'ESM,
mieux que les jas comms,
ce qui pourrait être bizarre,
parce que je suis comme un des jas comms,
original,
proponents.
Mais
oui, c'est juste un peu plus bon,
je pense que c'est juste la raison
pour laquelle persévérable c'est un peu
du primer,
The
C'est comme ça, tu as le commentaire J.S. et tu as le ASMR.
Ouais.
Donc, c'est un type script hybridiser, T.S. High, c'est la prononciation actuelle.
Dirty Minds out of the gutter.
Je n'aurais jamais eu ça.
C'est là-bas dans le livre, dans le titre de la vidéo.
C'est un type script hybridiser.
Ce que ça fait, c'est qu'il construit le code en mode ASMR.
C'est très opinionné.
Il y a un petit nombre de configs dans votre JSON package.
Et ça produise beaucoup plus de configs dans votre JSON package.
Mais ça figure, ok, tu sais, tu as une source slash index.ts.
Je vais construire ça à dist slash esm slash index.ts.
Je vais aussi construire ça à dist slash commons.js slash index.ts.
Et puis, tu as les exports dans votre package.json,
Properement, pour que, quand quelqu'un requiert votre package,
ils y aient les commons.js et quand ils y importent, ils y aient l'esm.
Et ça a évolué d'initialement des exports et des processus de construction.
Et puis, je réalise, tu sais, tu peux...
Si tu mets un JSON package dans la folder de dist,
tu peux interpréter le type de module.
Donc, je peux avoir un single index.js,
ou un single index.ts,
construire ça dans les deux locations
et faire un JSON package dans ces folders
et tu peux le mettre dans le même sens.
Cool.
TypeScript 5.2 est en train de sortir.
Et ça a fait beaucoup de choses pour moi.
Donc, ça a fixé un peu de choses
et ça a aussi brûlé des autres choses.
Ça a été beaucoup plus opinionné
sur ce que tu expliques comme résolution de module
vers ce que tu as dit comme module
et sur si c'est construit comme JS et ESM.
Donc, ils ont fait tout ça pour fixer
les plus communes bugs,
les plus communes bugs, les plus communes focons
dans les plus communes utilisées,
qui sont que tu es construit comme JS
ou ESM, pas les deux.
Je pourrais avoir fait la même décision
dans la même situation,
mais c'était vraiment frustrant pour moi
parce que tout le temps,
j'ai eu des scripts qui ont été détruits.
Et c'est ce que je réalise
en faisant tout ça en main,
ce n'est pas le meilleur de la façon.
Donc, j'ai écrit Tashi.
Ce que ça fait
c'est qu'il y a un JSON package
dans votre folder source.
Puis,
il y a un type script builds
comme ESM.
Il y a un JSON package
pour un type JSON
dans votre folder source.
Il y a un type script builds
pour les plus communes JS
et il y a un type JSON
Il y a un replacement
pour un bas script
et il est créé
comme un truc.
Mais
il y a un truc
dans le cas de BUDS
ou quelque chose.
Je vais utiliser ça
dans beaucoup de places maintenant
et ça a vraiment simplifié
parce que
je me suis dit que c'est les 3 modèles
que je veux exporter.
Un autre truc que j'ai souvent
réunis c'est
que la différence entre les ESM et les commas
n'est pas que
vous n'avez pas d'import.meta.url
dans les commas JS.
Si vous essayez de check
pour import.meta.url
c'est un error syntaxe.
Je veux
avoir des mots
avec quelqu'un.
Je veux quelqu'un qui fait que ça me rend le sens
de pourquoi c'est un error syntaxe.
Mais c'est dans le langage
de la spec.
Vous ne pouvez pas utiliser import
au sein d'un module contexte.
Vous ne pouvez pas
même regarder import.meta.
Import
peut seulement être utilisé pour import.
Si vous essayez de l'utiliser de l'autre façon
c'est un error syntaxe.
Donc
si vous voulez voir
quel est le
path au module correct
il y a deux différents moyens
pour le faire.
Vous devez either look
double underscore
d'un nom ou un nom filer
qui n'existent pas
en ESM
ou vous devez regarder import.meta.url
qui n'existent pas dans les commas JS
et si vous essayez de checker si ça existe
c'est un error syntaxe.
Vous ne pouvez pas même essayer et catcher.
Je pense que vous pouvez probablement essayer
Val.
Ça pourrait probablement fonctionner.
Mais je ne sais pas.
Ce que j'ai fait
c'est que
quand j'ai besoin
d'avoir cette information
je serais
d'un module.
J'aurais écrit une version
d'import.meta.url
et une version d'un double underscore
filer
et dans le billet de la commas JS
j'aurais pu
l'écrire
en un fil.
En tant que vous gardez ces types de polyfills
vraiment petits
et les types de polyfills
c'est un module
qui exporte import.meta.url
et ne fait rien d'autre.
Je sais que c'est un string
et je peux résolver
contre ça.
Et puis faire ce trick
où vous claviez
ce n'est pas si mal.
En Tushia
j'ai fait une convention pour faire ça
pour que vous puissiez
nommer quelque chose
des注dfive
donc belpiat
et tout le reste
sur des avocado
tu vois
et bordé
tout le reste
on met quand si Economic
d'autres versions
en dessous git jrap
19 hours ה Alice est anglaise
insbyter , il est très important que vous τις
ury
je dois parler de ça.
Il y a un library, il y a toujours un package.
Je l'ai trouvé, je l'ai trouvé un des codes de colorité qui pourrait passer les codes de colorité,
mais pas tous les choses positionnées.
Si tu as un r sur l'ar, ou un autre, c'est comme l'arrêt à la fin de la ligne.
Je suis en train d'utiliser un ink pour faire l'output.
Si je veux faire ce que je veux, je vais faire un program de l'inc,
prendre l'output, la ligne de l'inc, faire ça en html,
et avoir le droit de l'incliner.
C'est ce que je veux.
C'est cool, j'ai écrit des jeux en ink,
j'ai une série de jeux que j'ai écrit un peu plus tard en ink,
mais j'aimerais faire plus de ça.
Le test est un des choses qui est comme...
test et docs et les réunir des States et les choses.
Le test est très cool, j'aime ça.
Le library de test en ink est bien, c'est ce que j'ai utilisé pour tester les réporters.
Je ne sais pas si tu as trouvé ça, mais...
L'effect de la laitoutise en ink, en fait, c'est absolument critique.
J'ai eu un bunch de tests qui se sont faits en effect,
et React a été très clé à battre un desquels j'ai été sincronisé et déferi.
J'ai trouvé un layout d'effect, c'est ce que j'ai besoin.
OK, on a passé un peu de temps.
On ne va pas faire des tutoriels cette semaine.
Je veux juste vous remercier pour le commentaire.
C'était une belle conversation.
Honnêtement, un petit starstruck est ici
avec quelqu'un que j'ai connu dans le space JavaScript.
Merci pour le podcast.
Merci pour le podcast.
Oui, Isaac, c'est une conversation très importante.
J'aime entendre la histoire de l'OMN,
et de tes expériences.
Et aussi, comment tu penses de ces choses
et comment l'écosystème s'est évolué.
C'est une conversation superbe,
j'ai hâte de vous en parler.
Episode suivant:
Les infos glanées
devtools.fm:DeveloperTools,OpenSource,SoftwareDevelopment
A podcast about developer tools and the people who make them. Join us as we embark on a journey to explore modern developer tooling and interview the people who make it possible. We love talking to the creators front-end frameworks (React, Solid, Svelte, Vue, Angular, etc), JavaScript and TypeScript runtimes (Node, Deno, Bun), Languages (Unison, Elixor, Rust, Zig), web tech (WASM, Web Containers, WebGPU, WebGL), database providers (Turso, Planetscale, Supabase, EdgeDB), and platforms (SST, AWS, Vercel, Netlify, Fly.io).
Tags