Využijte nástroje, které využívají sílu Webpacku se snadným jednoduchým přednastavením pro rychlé spouštění projektů JavaScript, to vše bez předchozí konfigurace.
Ponořit se do zahájení nového projektu JS často přináší značné úsilí při přípravě vašeho prostředí před zahájením vývoje projektu. Mnoho vývojářů dává přednost používání nejmodernějších funkcí a moderních pracovních postupů s nástroji, aby byl proces příjemný. Bohužel, tento přístup může mít často poměrně dlouhou křivku učení, protože lidé tráví čas zkoumáním osvědčených postupů, sledováním složitých konfiguračních tutoriálů a experimentováním se standardními verzemi. Co kdybychom mohli vzít práci, kterou komunita vložila do konfigurace svých vlastních projektů, a zachytit ji do sdílených balíčků, které může používat kdokoli? To je důvod, proč jsme vytvořili Neutrino.
Neutrino je nástroj, který kombinuje sílu sestavování a konfigurace Webpacku a podporuje schopnost vytvářet projekty založené na JavaScriptu s předvolbami. Předvolba je základním stavebním kamenem Neutrina. S ním můžete doplnit projekt o řadu funkcí, včetně toho, jak je kompilován, zajistit kvalitu kódu, a dokonce rychle přidat testování. Rozdělením konfigurace do sestavitelných jednotek můžeme podpořit ekosystém, kde se přizpůsobení projektu stává plug and play.
Abychom získali představu o tom, jak snadné je začít s Neutrinem, projdu vytvořením několika jednoduchých projektů.
Poznámka:V nadcházejících příkladech používám Správce balíčků příze pro instalaci závislostí a vytváření skriptů. Toto je pouze moje osobní preference a pokud si to přejete, můžete použít klienta npm.
Rychlý start Node.js
Abychom mohli začít s naším prvním projektem Node.js založeným na Neutrinu, použijeme neutrino-preset-node. Podle dokumentace umožňuje:
- Žádná konfigurace předem a v případě potřeby snadné přepsání
- Kompiluje pro podporu Node.js v6.9+, moduly ES, asynchronní funkce
- Automaticky zapojené zdrojové mapy
Výborně, můžeme začít!
Nejprve potřebujeme adresář, ze kterého začneme pracovat. Z vašeho terminálu vytvořte nový adresář a přejděte do něj. Poté nainstalujeme neutrino
a neutrino-preset-node
jako vývojové závislosti.
❯ mkdir project && cd project ❯ yarn add --dev neutrino neutrino-preset-node
Ve výchozím nastavení předvolba Node.js hledá zdrojový kód v src
adresář, s hlavním vstupním bodem index.js
. Vytvořme tento soubor a upravme jej, pouze s jednoduchým HTTP serverem, který odešle vše, co na něj odešleme.
import { createServer } from 'http'; const port = process.env.PORT || 3000; createServer(({ url }, response) => { console.log(`Received message at ${url}`); response.end(url.slice(1)); }) .listen(port, () => console.log(`Running on :${port}`));
Dále přidáme do souboru package.json několik skriptů, které nám poskytnou několik jednoduchých příkazů ke spuštění a sestavení naší aplikace:
{ "scripts": { "start": "neutrino start --presets neutrino-preset-node", "build": "neutrino build --presets neutrino-preset-node", "serve": "yarn start && node build" }, "devDependencies": { "neutrino": "^4.0.1", "neutrino-preset-node": "^4.0.1" } }
Jsme připraveni spustit naši aplikaci! Pomocí yarn serve
v jednom terminálu a curl
v jiném můžeme vidět náš kód v akci:
❯ yarn serve Warning: This preset does not support watch compilation. Falling back to a one-time build. Hash: 8fa3faf9cbe8ca235884 Version: webpack 2.2.1 Time: 632ms Asset Size Chunks Chunk Names index.js 3.6 kB 0 [emitted] index index.js.map 3.53 kB 0 [emitted] index Running on :3000 --- ❯ curl http://localhost:3000/Hello\! Hello!
Ano. To je ono.
Zahájení projektu se zcela moderním toolchainem nevyžaduje žádné počáteční náklady.
Rychlý start React
Pro zábavu změňme tento projekt z Node.js na React. Podle dokumentace Neutrino má přednastavení React:
- Syntaxe JSX, moduly ES, podpora posledních 2 verzí prohlížeče a asynchronní funkce
- Podpora importu CSS, HTML, obrázků, písem a ikon přímo z JavaScriptu
- Výměna horkého modulu, žádné šablony HTML a mnoho dalšího
Pojďme si vyměnit předvolby a nainstalovat nějaké závislosti Reactu.
❯ yarn remove neutrino-preset-node && yarn add --dev neutrino-preset-react ❯ yarn add react react-dom
Naše příkazy package.json je třeba změnit, aby nyní používaly předvolbu React:
{ "scripts": { "start": "neutrino start --presets neutrino-preset-react", "build": "neutrino build --presets neutrino-preset-react" }, }
Namísto vytváření serveru Node.js vykreslíme nějaký obsah do webové aplikace. Podle konvence nám naše přednastavení umožňuje připojit naši aplikaci k ID „root“:
import React from 'react'; import { render } from 'react-dom'; render(( <main> <h1>Hello! 😎</h1> </main> ), document.getElementById('root'));
Zpět do terminálu a můžeme spustit naši aplikaci a načíst ji do prohlížeče:
❯ yarn start ✔ Development server running on: http://localhost:5000 ✔ Build completed
Doufejme, že to ukazuje, jak jednoduché je začít s novým projektem React! Pokud s Reactem pro svůj webový projekt nepracujete, zvažte použití neutrino-preset-web
pro jiné knihovny nebo obecné webové aplikace.
Více předvoleb
Neutrino usnadňuje skládání více předvoleb dohromady. Pro demonstraci přidáme přednastavení lintingu, které bude odpovídat našemu projektu stylovému průvodci Airbnb. Nainstalujte neutrino-preset-airbnb-base
:
❯ yarn add --dev neutrino-preset-airbnb-base
Abychom omezili určité opakování, využijeme funkci Neutrino, která bude čerpat z řady předvoleb v našem package.json. To nám ušetří pojmenování všech předvoleb, které chceme použít pro každý příkaz. Odeberte přednastavení z příkazů skriptu a přesuňte je do config.presets
.
{ "config": { "presets": [ "neutrino-preset-airbnb-base", "neutrino-preset-react" ] }, "scripts": { "start": "neutrino start", "build": "neutrino build" } }
Poznámka:neutrino-preset-airbnb-base
je třeba načíst před naším přednastavením React podle dokumentace.
Pokud upravíme náš kód a zavedeme něco, co je v rozporu s přednastavením, jsme v konzoli jasně upozorněni:
❯ yarn start ✔ Development server running on: http://localhost:5000 ✔ Build completed ERROR in ./src/index.js /node-project/src/index.js 6:10 error Strings must use singlequote quotes ✖ 1 problem (1 error, 0 warnings)
Také testování!
Rychle přidáme jednoduchý Jest test, protože proč ne? Předvolba Neutrino neutrino-preset-jest
používá konvenci test
adresář, s určitými očekáváními ohledně přípon souborů:
❯ yarn add --dev neutrino-preset-jest ❯ mkdir test && touch test/add.test.js ❯ touch src/add.js
Pojďme napsat rychlý test, který ověří, že funkce správně provádí jednoduché sčítání, které zakrátko vytvoříme:
import add from '../src/add'; describe('addition', () => { it('adds 2 numbers', () => { expect(add(3, 5)).toBe(8); }); });
Nyní náš doplňkový modul v src/add.js
:
export default (x, y) => x + y;
Upravte soubor package.json ještě jednou přidáním předvolby Jest do našeho seznamu spolu s příkazem ke spuštění testů:
{ "config": { "presets": [ "neutrino-preset-airbnb-base", "neutrino-preset-react", "neutrino-preset-jest" ] }, "scripts": { "start": "neutrino start", "build": "neutrino build", "test": "neutrino test" } }
Spusťte test!
❯ yarn test PASS test/add.test.js addition ✓ adds 2 numbers (3ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 1.228s Ran all test suites.
Pokud bychom udělali chybu při psaní našeho sčítacího modulu a omylem použili násobení:
export default (x, y) => x * y;
To by způsobilo selhání testu:
❯ yarn test FAIL test/add.test.js ● addition › adds 2 numbers expect(received).toBe(expected) Expected value to be (using ===): 8 Received: 15 at Object.<anonymous> (test/add.test.js:5:38) at process._tickCallback (internal/process/next_tick.js:103:7) addition ✕ adds 2 numbers (5ms) Test Suites: 1 failed, 1 total Tests: 1 failed, 1 total Snapshots: 0 total Time: 1.221s Ran all test suites.
Úprava sestavení
Jednou ze skvělých vlastností Neutrina je, že nemusíte vyměnit jednoduchost za uzamčení nebo nedostatek rozšiřitelnosti. Postupem podle dokumentace můžete proces sestavení projektu doplnit o další funkce, které nejsou součástí vašeho přednastavení. Pokud zjistíte, že tyto funkce nebo změny používáte ve více projektech, můžete je zahrnout do své vlastní předvolby a sdílet je se svým týmem a komunitou!
Závěr
Udělat z Neutrina nástroj, kterým je dnes, bylo hodně těžké práce, ale doufáme, že se vám bude líbit. Vyzkoušejte to ve svých projektech, poskytněte zpětnou vazbu, vytvořte si vlastní přednastavení a sdílejte je s ostatními. Chceme, aby každý byl úspěšný s Neutrinem.
Pokud byste se chtěli zapojit do vývoje nebo dokumentace, navštivte prosím sekci přispívající v dokumentech, kde najdete úplné podrobnosti, nebo navštivte naše úložiště GitHub.
Dokumentace k Neutrinu: https://neutrino.js.org/
Neutrino GitHub: https://github.com/mozilla-neutrino/neutrino-dev
Dík!
Eli Perelman &Hassan Ali — Mozilla