bundler: z.B. webpack, parcel, rollup
Transpiler: Beispiel bei JavaScript: babel:
Bundler dienen als Ausgangspunkt für Builds:
import
deklariert)Beispiele für Bundler:
transformieren Code
Beispiel: Verarbeiten von JavaScript:
Einfach zu nutzender Bundler mit Unterstützung für:
beginnen mit package.json, welches ein leeres Objekt enthält: {}
Installation von Abhängigkeiten:
npm install parcel
in src/index.js:
import { add } from './mymath.js';
console.log(add(1, 1));
in src/mymath.js:
export const add = (a, b) => a + b;
Konfiguration in package.json:
{
"source": "src/index.html",
"scripts": {
"build": "parcel build",
"start": "parcel"
}
}
HTML Einstiegspunkt in src/index.html:
<!DOCTYPE html>
<html>
<head>
<title>React starter app</title>
</head>
<body>
<div id="app"></div>
<script src="index.js"></script>
</body>
</html>
Build via:
npm run build
Entwicklungsserver unter localhost:8080:
npm run start
Bundler, der JavaScript als zentrale Sprache verwendet - basiert auf import
-Statements
wir beginnen mit einer package.json-Datei, die ein leeres Objekt enthält: {}
Installation von Abhängigkeiten:
npm install webpack webpack-cli webpack-dev-server
Beispielprojekt aus 2 Dateien:
src/index.js:
import { add } from './mymath.js';
console.log(add(1, 1));
src/mymath.js:
export const add = (a, b) => a + b;
Konfiguration via webpack.config.js:
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
},
};
verwende src/index.js als Einstiegspunkt
schreibe das Resultat nach dist/, bentzte dist/bundle.js als Einstiegspunkt
npm scripts in package.json:
"scripts": {
"build": "webpack",
"start": "webpack serve --mode development"
}
Build via:
npm run build
Entwicklungsserver auf localhost:8080 via:
npm run start
Beispiele:
Erstellt eine HTML-Seite, die auf das JavaScript-Bundle verweist (unter dist/index.html)
npm install html-webpack-plugin
in webpack.config.js:
const HtmlWebpackPlugin = require('html-webpack-plugin');
plugins: [
new HtmlWebpackPlugin({title: "page title"})
],
npm install babel-loader @babel/core
Aktivierung von Babel in webpack.config.js:
module: {
rules: [
{
test: /\.(js)$/,
exclude: /node_modules/,
use: ["babel-loader"],
},
],
},
Bemerkung: in dieser Konfiguration ändert Babel noch nichts am Code
npm-Pakete:
mögliche Konfiguration - z.B. in package.json:
"babel": {
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
},