Webpack Projekt in wenigen einfachen Schritten realisiert. Inklusive SASS, Babel JS Compiler, UglifyJS und einem automatischem WATCH.
Wie auch bei meinem Artikel zuvor mit Bootstrap, Sass und Grunt empfehle ich die Seite von oben nach unten durchzugehen. Nach 15 Minuten hat man ein lauffähiges Projekt.
Wir legen als erstes ein Root Verzeichnis zb. „projects/“ an. Darin erstellen wir jetzt unser eigentliches Project „name“. In meinem „dev/“ Verzeichnis an wird entwickelt. Im CSS Verzeichnis liegen später die SASS Files. Die im Produktiv-Betrieb verwendeten Sources werden später mit webpack in das „src/“ Verzeichnis generiert.
Mögliche Beispiel-Struktur:
/projects/
/projects/name/
/projects/name/dev/ (Arbeitsverzeichnis)
/projects/name/dev/js/
/projects/name/dev/css/
/projects/name/src/ (Ausgabeverzeichnis)
/projects/name/src/js/
/projects/name/src/css/ |
Installieren
Folgende Anwendungen müssen nacheinander installiert werden. Im root Verzeichnis „projects“ installierten Programme müssen nur einmal installiert werden. Andere je Projekt, da sie sich auch unterscheiden könnten.
Schritte (global – Beispiel „projects“)
Wer den Installations-Artikel mit Grunt gelesen hat, kann erkennen, dass wir bis jetzt viele Schritte wiederholen.
Schritte (pro Einzelprojekt – Beispiel „name“)
- git installieren (optional)
- Erstellen Sie mit dem Befehl npm init eine Datei namens package.json für Ihre Anwendung.
npm init
Es werden ein paar Fragen gestellt, einfach ausfüllen – git Url eintragen, wenn erstellt und mit „yes“ bestätigen. Am besten die package.json im Texteditor offen lassen, dann kann man gleich mitlesen, was als nächstes installiert wird
Test-Files erstellen
Mittels Test-Files überprüfen wir, ob unsere webpack Einstellung gleich greifen werden.
In unserem „dev/“ Verzeichnis legen wir ein SASS File im „css/“ ab und eine JavaScript Datei unter „js/“.
Beispiel Sass: dev/css/demo.scss
1 2 3 4 5 | $primaryColor: lime;
body {
background: $primaryColor;
} |
Beispiel JS: dev/js/demo.js
1 2 3 4 | // test let test = "Hallo";alert("Servus und "+ test +" Du!"); |
Ich verwende hier mit Absicht das JS-Neue „let“ und nicht „var“, damit ich das babel testen können. Mit diesem Plugin können wir im neuen ECMAScript schreiben. Umgewandelt wird das JS anschließend für ältere Browser.
In unserem Projekt Verzeichnis (/projects/name/) legen wir eine index.html ab und verknüpfen auf die später generierte StyleSheet und JavaScript Datei.
1 2 3 4 5 6 7 8 9 10 11 | <html> <head> <meta charset="UTF-8"> <title>demo</title> <link rel="stylesheet" type="text/css" href="src/css/demo.css"> <script src="src/js/demo.js"></script></head> <body> <h1>DEMO</h1> </body> </html> |
webpack installieren
- Nun installieren wir webpack (Commandline)
npm install --save webpack
webpack Config erstellen
In unserem Projekt Verzeichnis (/projects/name/) erstellen wir erstmal eine leere /webpack.config.js Datei.
Am besten folgenden Code kopieren und in die leere Datei einfügen. Namen und Verzeichnisse ggf. anpassen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | var ExtractTextPlugin = require('extract-text-webpack-plugin'); var UglifyJsPlugin = require('uglifyjs-webpack-plugin'); module.exports = { entry: ['./dev/js/demo.js', './dev/css/demo.scss'], output: { filename: 'src/js/bundle.js' }, module: { rules: [ { test: /.js$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['env'] } } }, { test:/\.scss$/, use: ExtractTextPlugin.extract({ use: [{loader:'css-loader?sourceMap'}, {loader:'sass-loader'}] }) } ] }, plugins: [ new ExtractTextPlugin({ // define where to save the file filename: 'src/css/demo.css' }), new UglifyJsPlugin({ test: /\.js($|\?)/i }) ], watch: true }; |
- Anschließend: (Commandline)
npx webpack --config webpack.config.js
Plugins installieren
- babel: (Commandline)
npm install --save-dev babel-loader babel-core babel-preset-env
- Die SASS Plugins: (Commandline)
npm install --save-dev sass-loader node-sass style-loader css-loader extract-text-webpack-plugin
- uglifyjs (comprimiert das js): (Commandline)
npm install --save-dev uglifyjs-webpack-plugin
Ausführen
- webpack Service starten (Commandline)
webpack
- in der Windows Console beenden (Tastatur)
STRG + c
Das wars auch schon!
Ich empfehle kleine Änderungen an dem SASS und JS File vorzunehmen. Hier ist kein „–watch“ Befehl nötig.
In der Config Datei haben wir den watch-Befehl schon ausgeführt: „watch: true“. Bitte auch mal im Javascript bewusst einen Fehler erzeugen. Unter Windows verwende ich die PowerShell. Webpack gibt die Fehler detailliert aus und die PowerShell zudem farbig.
Viel Spaß beim Arbeiten …
Javascript Files zu einer Datei zu verbinden geht ganz leicht ohne Plugin.
Bei der „entry“ Stelle, noch die zweite Datei mit einfügen: