javascript - Hvordan bruke én pakkebehandling for backend og frontend? (Yarn/NPM)
Tidligere brukte jeg NPM for serverside-ting og Bower for frontend. NPM ville installere til node_modules/-katalogen, og jeg hadde en .bowerrc for å installere de pakkene til public/lib.
Nå har jeg begynt å bruke Yarn i stedet for NPM; og siden de stort sett er 1:1 kompatible har overgangen gått glatt. Men nå lurer jeg på om jeg kan kvitte meg med Bower og bare bruke Yarn for alt. Men jeg ser ingen måte (hverken i NPM eller Yarn) å installere vanlige pakker til node_modules, men samtidig ha en slags separat mulighet til å legge noen pakker i public/... Noe lignende --dev-alternativet, men i stedet ville det vært yarn add jquery --public. Finnes det noe slikt?
En mulighet, selvfølgelig, ville være å installere alle pakkene til public/-mappen, men jeg tror dette er en dårlig praksis (rett meg hvis jeg tar feil).
Et annet alternativ kan være å ha en egen package.json i public/-mappen og kjøre separate Yarn-kommandoer der for front-end-pakker, men det er bare litt mindre praktisk, tror jeg; mer feilutsatt.
Svar #1
Normen er stort sett noe sånt som:
- Installer pakker via
yarn Bruk en oppgavekjører som
gulp, eller modulinnlaster og bundler somwebpackfor å lage de pakkene du trenger.- Dette avhenger alt av stakken din, det finnes åpenbart andre, for eksempel har jeg tidligere brukt .NETs native bundling, som du kan oppnå det samme som med gulp/webpack... igjen, dette er opp til deg å bestemme.
Hovedpoenget er å installere alle modulene på ett sentralt sted (ved å bruke en pakkebehandler), og deretter la en loader eller annen prosess hente og flytte de nødvendige ressursene til stedet du trenger å bruke dem.
Jeg vil foreslå å ta en titt på et kickstart-prosjekt (som gjelder stakken du bruker), f.eks.: Jeg har brukt Fountainjs tidligere med suksess, eller se på Yeoman hvis Fountain ikke faller i smak (forresten, Fountain er bygget på toppen av Yeoman)
I pseudo-kommandoer:
1. yarn install /// installs all assets
2. gulp build /// cleans out current public folder, bundles & copies new
3. gulp serve /// runs your app
