README
Fastpack
Pack JS code into a single bundle fast & easy.
Why?
Because JavaScript builds should be faster!
Here is an example benchmark of bundling ~1600 modules together.
Fastpack | Parcel | Webpack | |
---|---|---|---|
initial build | 0.730s | 9.740s | 3.625s |
persistent cache | 0.171s | 1.218s | N/A |
watch mode | 0.084s | 0.503s | 0.473s |
Getting Started
Let's try building the simple React application!
$ mkdir react-app
$ cd react-app
$ yarn init -y
$ yarn add react react-dom
$ yarn add --dev fastpack
$ yarn add --dev babel-loader babel-preset-react-app style-loader css-loader url-loader
src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));
src/index.css
body {
margin: 0;
padding: 0;
font-family: sans-serif;
}
src/App.js
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code> and save to reload.
</p>
</div>
);
}
}
export default App;
src/App.css
.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 80px;
}
.App-header {
background-color: #222;
height: 150px;
padding: 20px;
color: white;
}
.App-title {
font-size: 1.5em;
}
.App-intro {
font-size: large;
}
@keyframes App-logo-spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
index.html
<!DOCTYPE html>
<html>
<head><title>React App</title></head>
<body>
<div id="root"></div>
<script type="text/javascript" src="./bundle/index.js"></script>
</body>
</html>
Also, add the src/logo.svg
of your choice. Now let's add some config:
.babelrc
{
"presets": ["react-app"]
}
And the fastpack configuration as well:
fastpack.json
{
"entryPoints": ["src/index.js"],
"preprocess": [
{
"re": "^src.+\\.js