diff --git a/.gitignore b/.gitignore
index ce434b6..83d8e95 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,8 @@ npm-debug.log
node_modules
-.tmp
\ No newline at end of file
+.tmp
+
+site/build
+
+.idea
\ No newline at end of file
diff --git a/site/package.json b/site/package.json
new file mode 100644
index 0000000..bc9d3cc
--- /dev/null
+++ b/site/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "node-package-manager-benchmark",
+ "version": "0.1.0",
+ "private": true,
+ "devDependencies": {
+ "react-scripts": "0.8.2"
+ },
+ "dependencies": {
+ "react": "^15.4.1",
+ "react-dom": "^15.4.1"
+ },
+ "scripts": {
+ "start": "react-scripts start",
+ "build": "react-scripts build",
+ "test": "react-scripts test --env=jsdom",
+ "eject": "react-scripts eject"
+ }
+}
diff --git a/site/public/favicon.ico b/site/public/favicon.ico
new file mode 100644
index 0000000..5c125de
Binary files /dev/null and b/site/public/favicon.ico differ
diff --git a/site/public/index.html b/site/public/index.html
new file mode 100644
index 0000000..5afc891
--- /dev/null
+++ b/site/public/index.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+ React App
+
+
+
+
+
+
diff --git a/site/src/App.js b/site/src/App.js
new file mode 100644
index 0000000..fc1f337
--- /dev/null
+++ b/site/src/App.js
@@ -0,0 +1,16 @@
+import React, {Component} from 'react';
+import BenchmarkResults from './component/BenchmarkResults';
+
+import stats from './stats.json'
+
+class App extends Component {
+ render() {
+ return (
+
+
+
+ );
+ }
+}
+
+export default App;
diff --git a/site/src/component/BenchmarkResults.js b/site/src/component/BenchmarkResults.js
new file mode 100644
index 0000000..81cfea0
--- /dev/null
+++ b/site/src/component/BenchmarkResults.js
@@ -0,0 +1,53 @@
+import React from 'react';
+
+const BenchmarkResults = ({data}) => {
+ return (
+
+
Node package manager benchmark
+
+
This benchmark compares the performance of npm, pnpm and yarn.
+
+ {data.map(singleBenchmark =>
)}
+
+ )
+};
+
+const TemplateBenchmarkResult = ({data}) => {
+ return (
+
+
{data.framework}
+
+
The app's package.json here
+
+
+
+ | Command |
+ Time in ms |
+ Size in byte |
+
+
+
+
+ | {data.commandNpm} |
+ {data.timeNpm} |
+ {data.sizeNpm} |
+
+
+ | {data.commandYarn} |
+ {data.timeYarn} |
+ {data.sizePnpm} |
+
+
+ | {data.commandPnpm} |
+ {data.timePnpm} |
+ {data.sizePnpm} |
+
+
+
+
+
+ )
+};
+
+export default BenchmarkResults;
diff --git a/site/src/index.js b/site/src/index.js
new file mode 100644
index 0000000..5f2ffc9
--- /dev/null
+++ b/site/src/index.js
@@ -0,0 +1,10 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import App from './App';
+
+ReactDOM.render(
+ ,
+ document.getElementById('root')
+);
diff --git a/site/src/stats.json b/site/src/stats.json
new file mode 100644
index 0000000..78fca95
--- /dev/null
+++ b/site/src/stats.json
@@ -0,0 +1,44 @@
+[
+ {
+ "id": 0,
+ "framework": "React app",
+ "commandNpm": "npm intall",
+ "commandYarn": "yarn",
+ "commandPnpm": "pnpm install",
+ "timeNpm": "82411",
+ "timeYarn": "32462",
+ "timePnpm": "22350",
+ "sizeNpm": "96825002",
+ "sizeYarn": "175713152",
+ "sizePnpm": "91086578",
+ "packageUrl": "https://github.com/zkochan/node-package-manager-benchmark/blob/master/fixtures/react-app/package.json"
+ },
+ {
+ "id": 1,
+ "framework": "Ember app",
+ "commandNpm": "npm intall",
+ "commandYarn": "yarn",
+ "commandPnpm": "pnpm install",
+ "timeNpm": "166925",
+ "timeYarn": "19426",
+ "timePnpm": "18240",
+ "sizeNpm": "105615718",
+ "sizeYarn": "120189948",
+ "sizePnpm": "102686669",
+ "packageUrl": "https://github.com/zkochan/node-package-manager-benchmark/blob/master/fixtures/ember-quickstart/package.json"
+ },
+ {
+ "id": 2,
+ "framework": "Angular app",
+ "commandNpm": "npm intall",
+ "commandYarn": "yarn",
+ "commandPnpm": "pnpm install",
+ "timeNpm": "85625",
+ "timeYarn": "14376",
+ "timePnpm": "9262",
+ "sizeNpm": "81464712",
+ "sizeYarn": "87297812",
+ "sizePnpm": "77677097",
+ "packageUrl": ""
+ }
+]