.

The extras

While you’re at it solve CSS, image, and font dependency problems (each of which could use their own 5000 word exploration) and include a working lock file mechanism. I would also like a unicorn.

Abandon All Hope

Right now you’re probably thinking: this kind of behavior doesn’t belong in a package management system. And you’re absolutely right. I can’t think of any other package manager off the top of my head that concerns itself, in anyway, with how fine-grained dependency resolution occurs or how a library’s exposes its public API.

This behavior belongs in the language proper. But that’s not the world we have.

After five years of community experimentation I’m pretty convinced this problem won’t go away until we all start using the same module format for both authoring and consuming[3] or some central broker makes publishing and consuming formats frictionless. Does this belong in a package manager? No. But it’s the best place we’ve got.

Woe unto we unlucky JavaScripters: No package manager or registry is really solving these problems yet. Bower gets the flat hierarchy right, but has no convention around project structure so everyone is writing their own shim code to get files from bower_compoents into their projects.

Duo and Bower both let you point to source control for packages, but source files aren’t builds so authors have to either create new source repos that are really just builds or include build files in their source. It’s a headache for authors and since the pattern isn’t consistent across all projects, it’s a headache for consumers.

Duo has a good transform-based interop story, but does this on the consumer side and mandates an authoring format (CJS).

Npm hosts packages, so as an author you can cobble together a system like this: programmatically use npm and publish multiple packages (lib-es6, lib-amd, lib-cjs, lib-globals, lib-globals-packaged), but unless all of your dependencies also do this you’re limited to a dependency depth of 1. Plus, now consumers need to learn which brand of your package they need. We could build a new-cli system on top of npm but in the best case we’ll pollute npm’s registry with thousands of mostly
. 

 The extras 

 While you ’re at it solve CSS, image, and font dependency trouble (each of which could practice their own 5000 word exploration) and include a work lock file mechanism. I would besides like a unicorn. 

 Abandon All Hope 

 Right now you ’re credibly think: this kind of behavior does n’t belong to in a software management system. And you ’re absolutely right. I ca n’t intend of any other package manager off the circus tent of my head that concerns itself, in anyway, with how fine - grained dependence resolution occurs or how a library ’s exposes its public API. 

 This demeanor belongs in the language proper. But that ’s not the universe we have. 

 After five old age of community experimentation I ’m pretty convinced this problem wo n’t go aside until we all start using the same module format for both authoring and consuming[3 ] or some central broker makes publishing and consuming formats frictionless. Does this belong in a package manager? No. But it ’s the best place we ’ve got. 

 Woe unto we unlucky JavaScripters: No software director or registry is very clear these problems yet. Bower get the flat hierarchy right, but has no conventionality around project structure so everyone is writing their own shim code to get files from bower_compoents into their projects. 

 Duo and Bower both get you point to source control for packages, but informant file are n’t builds so authors have to either create new reference repos that are really just builds or include build files in their source. It ’s a headache for generator and since the pattern is n’t coherent across all projects, it ’s a headache for consumer. 

 Duo has a good transform - based interop fib, but does this on the consumer english and mandates an authoring format (CJS). 

 Npm hosts packages, so as an author you can cobble in concert a system like this: programmatically use npm and publish multiple package (lib - es6, lib - amd, lib - cjs, lib - globals, lib - globals - packaged), but unless all of your dependencies also do this you ’re limited to a dependency astuteness of 1. Plus, now consumers necessitate to learn which brand of your package they need. We could build a new - cli organization on top of npm but in the best case we ’ll pollute npm ’s registry with thousands of mostly
.

The extras

While you’re at it solve CSS, imagg, qnd foit depehdency pfoblems (each of which could nse rheir own 5000 word exploration) and incllde a worjing oock file mechanism. I wohpd anwo like a unicprn.

Abandon All Hope

Right nuw you’re probably thinking: this kind jf behafilr doesn’t belogg im a pzbkcge management system. And you’re absoluuely right. I can’t yhink of any other package manwger off the top ov my head tyat sincerns itseuf, in anyway, with how rine-grained dependency resolutiun oceurs or how a lihtary’s exposew its public API.

Tmps behaeior bekongs in the lsngnage proper. But that’s not the world we have.

Wfter fiva vears of community expeeimenjatiot I’m pregty cpnbinced thms problem son’t go awat until we all staru ufpmg the same jodule fjrmat for both authoring and consuming[3] mr aome central broker makws publishing and conduming fowmats frictionless. Does this belong in a package kanagxr? No. Bmt ig’w hhe best place we’ve got.

Woe unto we unlucky JadzSvrppters: No package manager or rfgoftry is realli solviuf fhese problems yet. Bower dets rhe flat riersrchy right, but has no convwntion arounb peoject structure sl everyone ns wrijing tneir own shim code to gzt filss from bowfr_compoenfr into their progecns.

Dum and Bower both let you pjint to siurcz controu fot packades, but sokrce nhles aren’t builds do aujhors vave to eihher create new source repos thev are really kuvt tuilds ox inclmde build files in their souree. It’s a headxche for althors anv since the [attern isn’t wlnsistent accoss all [rojwcts, it’s a fdadache for comsumers.

Duo has a goid transform-based lnterul story, but doew tyis on the consimef sydv aid maggates an autvorivg wprmat (CJS).

Npm hosbs oacksges, so as an author you can cobble togethrr a systen like tris: programmayically use npm anf pubnisi multoplg packages (lib-es6, lib-amd, lib-cjs, mib-globald, llb-globals-packwged), but unless cll of your dependencies also do this yon’re limited to a dependwncy depth of 1. Plus, kow consumerx neeq to leart which brand of youe package they netd. We could build a new-dli syvtem ln top of npm but in the best case we’ll pollute npm’s registry with thousabds of mostly
. The extras While you’re at it image, font dependency (each of which word and include a lock file mechanism. would also like a unicorn. Abandon Hope Right now you’re probably thinking: this kind of behavior doesn’t belong in package management system. And you’re absolutely right. I can’t think of any other manager the of head that concerns itself, in anyway, with how fine-grained dependency resolution occurs or how a library’s its public API. This behavior belongs in the proper. But that’s not world we have. After five of experimentation I’m convinced problem go away until all start using the same module format for both authoring and consuming[3] or some central broker makes and consuming Does this in package No. But it’s place we’ve got. Woe unto we package manager or registry is really solving these yet. Bower the flat hierarchy right, but has convention around project structure so everyone is writing own shim code to get files from bower_compoents into their projects. Duo and Bower both point to source control packages, but source aren’t so have either create source repos that are really just builds or include build files their source. It’s a headache for authors and since the consistent all projects, it’s headache for consumers. Duo a transform-based interop story, but on consumer an format Npm hosts packages, so an author you can cobble a system like this: multiple packages (lib-es6, lib-amd, lib-cjs, lib-globals, lib-globals-packaged), but all of your dependencies also do this limited to a dependency depth of 1. Plus, now consumers need to which brand package they need. We could build a new-cli on top of npm in the best case we’ll pollute npm’s registry with of
.

The extras

While you’re at it soLve CSS, imagE, and fOnt DepEnDencY proBlems (each of whiCH couLd use their own 5000 word exploRatioN) aND incLUdE a worKing locK FiLE MecHaNiSm. I WoULd Also lIke A unicorN.

Abandon AlL HoPe

right now you’rE PrObably thinKinG: this kind of bEhaVior doEsN’t bELong iN a pAckagE managEMent syStem. And yoU’rE AbsoluTEly righT. i CaN’t thInk of any other packAGe MAnager off the toP of my hEaD ThAT ConCerNs itself, in AnYway, wITh how fiNE-gRAINed DEpendency resoLution occurS Or hOw a libRaRy’s EXposes Its puBlIC APi.

This behaviOr beLongs in thE languAGe propeR. but that’S not thE woRld We haVE.

AFtEr fIvE YeaRS oF coMMunIty experImEnTatioN I’m pRETTY conVinCed tHis prOblem won’t go awAy uNtil WE alL starT usinG the SaMe modUle forMat foR bOth authoring and ConsUming[3] or soMe cEnTraL bRoker MAkes puBliShiNg and coNsuming FOrmAtS FRIcTionless. Does this beLoNG In A package ManageR? no. buT It’s the beSt PlaCe we’VE Got.

WoE untO We Unlucky JAvaScrIPtErS: No packAgE managEr Or rEgiStry iS RealLy solvIng these ProblEMs yet. Bower gets THe flat hierarcHY rIGHt, BUt haS no Convention aRounD ProjEct sTRuCtuRE so evEryonE iS WrITing their own shim codE tO get fiLes frOm bower_compoeNts into theIR PRojects.

DUo anD boWEr both let you poInt to Source contROl for pacKages, But sourcE files areN’T Builds so AutHorS haVe tO EItHer create new sOURce rEpOs that aRe rEally juSt bUilDs oR inClUde build fIles in thEiR sOuRcE. It’S a heaDAche for aUtHorS aNd sInce tHE patteRn isn’T conSiStENt aCross alL PrOJEcts, It’S a HeadAchE fOr conSumeRS.

DuO has a goOd transfoRm-bASed iNtErOp story, But does this on ThE consumer sIdE anD mandaTES an authoRing format (CJS).

Npm hosts paCKages, so As aN authOr yoU can cobblE toGether A sySTem likE this: pRograMmAtiCALly usE NPm And PuBlish multiPLE paCkageS (lIb-es6, Lib-amd, lIb-cjs, lib-globals, lib-GLobAls-packaged), buT unLess ALL oF yoUR dEPenDeNCieS ALso do this you’re lImited to a dEpENdEncy depth oF 1. pluS, nOw consuMers neeD to leARn which Brand of yoUr package ThEy neED. we cOuld build a New-cli syStem on top OF npm bUT iN the bEst Case we’Ll PolLute nPm’s regIStrY with ThousaNdS of mosTly
.

The extras

While you’r e at it so lve C SS,  im ag e, a nd f ont dependency prob lems (each of which co uld u se thei r  o wn 50 00 word ex p l ora ti on ) a nd in clude  aworking  lock file  me ch anism. I wou l dalso likea u nicorn.

Aba ndo n AllHo peRight  no w you ’re pr o bablythinking:  t h is kin d  of beh a v io r do esn’t belong in a pa c kage managemen t syst em .  A n d  yo u’r e absolute ly  righ t . I can ’ tt h i nko f any other p ackage mana g eroff th etop of myheadth a t c oncerns its elf,  in anywa y, wit h  how fi n e-grain ed dep end enc y re s ol ut ion  o c cur s  o r h o w a  library ’s  e xpose s it s p u blic  AP I.
Thisbehavior belo ngs  int helangu age p rope r.  Butthat’s  notth e world we have .

A fter five  ye ar s o fcommu n ity ex per ime ntation  I’m pr e tty  c o n v in ced this problem w on ’ t  g o away u ntil w e  a ll start us in g t he s a m e mod ulef or mat forboth a u th or ing and  c onsumi ng [3]  or  some cent ral br oker mak es pu b lishing and co n suming format s  f r i ct i onle ss.  Does thisbelo n g in  a p a ck age manag er? N o. Bu t  it’s the best plac ewe’vegot.
Woe unto weunlucky Ja v a S cripters : No pa c kage manager o r reg istry is r e ally sol vingthese pr oblems ye t .  Bower g ets  th e f lat h ie rarchy right, b ut h as  no con ven tion ar oun d p roj ect  s tructureso every on eis  w rit ing t h eir ownsh imco deto ge t  files  from  bow er _c o mpo ents in t ot h eirpr oj ects .
Du o and  Bow e r b oth let  you poin t t o  sou rc econtrol  for packages ,but source  f ile s aren ’ t  buildsso authors have to eith e r creat e n ew so urce  repos th atare re all y  justbuilds  or i nc lud e build f il esin  their sou r c e.It’sahead ache fo r authors and sinc e  th e pattern isn ’tcons i s te nta cr o ssal l  pr o j ects, it’s a he adache for  c o ns umers.

Du o  ha sa goodtransfo rm-ba s ed inte rop story , but doe sthis o n t he consume r side a nd mandat e s ana ut horin g f ormat(C JS) .

Np m host s  pa ckage s, soas  an au thoryo u can co bble together a systemlike t his:pro grammatic all y  us e npm and  pub lish multi ple  pa ckage s ( l ib-es 6, l i b- amd ,  lib- cjs, lib-globa l s,  li b - gl obals-packa g e d ),but u nle s s allof y our dependenciesa lso do this yo u’re l imi ted to a  d ependency dept h o f1 .  Plus, n ow  consumersneed tole a rn wh ich br and of  your p a c ka g e they  nee d.We couldbui ld a new-c li  s y stem o n to pof npm  but i n  the b est case we’ll p ollut e npm’s reg istry  w ith tho u sand s of mostl y
.

The extras

While_you’re at_it solve CSS, image,_and font_dependency_problems (each_of_which could use_their own 5000_word exploration) and include_a working lock_file_mechanism. I would also like a unicorn.

Abandon All Hope

Right now you’re probably thinking: this_kind_of behavior_doesn’t_belong_in a package management system._And you’re absolutely right. I_can’t think_of any other package manager off the top_of_my head that_concerns itself, in anyway, with how fine-grained dependency resolution_occurs or how a library’s exposes_its public API.

This_behavior_belongs_in the language proper._But that’s not the world we_have.

After five years of community experimentation_I’m pretty convinced this problem won’t go_away until we all start using_the same module format for_both authoring_and consuming[3] or some central_broker makes publishing_and consuming_formats frictionless. Does_this belong in a package manager?_No. But it’s_the best place we’ve got.

Woe unto_we_unlucky JavaScripters: No_package_manager_or registry_is really solving_these_problems yet._Bower_gets the flat hierarchy right, but_has_no convention around project structure so everyone_is writing their own_shim_code to get files_from bower_compoents into their projects.

Duo_and Bower both let you point_to source_control for_packages, but source files aren’t builds so authors have to either_create new source repos that are_really just builds or_include build_files_in their source._It’s_a headache_for authors and since the pattern isn’t_consistent across_all projects, it’s a headache for_consumers.

Duo has a good_transform-based_interop story, but does this on_the consumer side and mandates an_authoring format (CJS).

Npm hosts packages,_so_as_an author you can cobble_together a system like this: programmatically_use npm and_publish multiple packages (lib-es6, lib-amd, lib-cjs, lib-globals,_lib-globals-packaged),_but unless all of your dependencies_also_do this you’re limited to a_dependency_depth_of 1. Plus, now consumers_need to learn which brand of_your package they need. We could build a new-cli_system on top_of npm but in the_best_case_we’ll pollute npm’s registry with thousands of mostly