",
+ "private": true,
+ "scripts": {
+ "dev": "node build/dev-server.js",
+ "build": "node build/build.js"
+ },
+ "dependencies": {
+ "vue": "^2.2.2",
+ "vue-algolia-components": "*"
+ },
+ "devDependencies": {
+ "autoprefixer": "^6.7.2",
+ "babel-core": "^6.22.1",
+ "babel-loader": "^6.2.10",
+ "babel-plugin-transform-runtime": "^6.22.0",
+ "babel-preset-env": "^1.2.1",
+ "babel-preset-stage-2": "^6.22.0",
+ "babel-register": "^6.22.0",
+ "chalk": "^1.1.3",
+ "connect-history-api-fallback": "^1.3.0",
+ "copy-webpack-plugin": "^4.0.1",
+ "css-loader": "^0.26.1",
+ "eventsource-polyfill": "^0.9.6",
+ "express": "^4.14.1",
+ "extract-text-webpack-plugin": "^2.0.0",
+ "file-loader": "^0.10.0",
+ "friendly-errors-webpack-plugin": "^1.1.3",
+ "function-bind": "^1.1.0",
+ "html-webpack-plugin": "^2.28.0",
+ "http-proxy-middleware": "^0.17.3",
+ "webpack-bundle-analyzer": "^2.2.1",
+ "semver": "^5.3.0",
+ "opn": "^4.0.2",
+ "optimize-css-assets-webpack-plugin": "^1.3.0",
+ "ora": "^1.1.0",
+ "rimraf": "^2.6.0",
+ "url-loader": "^0.5.7",
+ "vue-loader": "^11.1.4",
+ "vue-style-loader": "^2.0.0",
+ "vue-template-compiler": "^2.2.1",
+ "webpack": "^2.2.1",
+ "webpack-dev-middleware": "^1.10.0",
+ "webpack-hot-middleware": "^2.16.1",
+ "webpack-merge": "^2.6.1",
+ "node-sass": "^4.5.0",
+ "sass-loader": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 4.0.0",
+ "npm": ">= 3.0.0"
+ },
+ "browserslist": [
+ "> 1%",
+ "last 2 versions",
+ "not ie <= 8"
+ ]
+}
diff --git a/packages/vue-algolia-playground/src/App.vue b/packages/vue-algolia-playground/src/App.vue
new file mode 100644
index 0000000000..b176459fd7
--- /dev/null
+++ b/packages/vue-algolia-playground/src/App.vue
@@ -0,0 +1,401 @@
+
+
+
+
+
+
+
+ Demo Store
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Browse by
+
+
+
+
+
+
Price
+
+
+
+
+
+
Material
+
+
+
+
+
+
Color
+
+
+
+
+
+
Rating
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
${{hit.price}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/vue-algolia-playground/src/assets/logo.png b/packages/vue-algolia-playground/src/assets/logo.png
new file mode 100644
index 0000000000..f3d2503fc2
Binary files /dev/null and b/packages/vue-algolia-playground/src/assets/logo.png differ
diff --git a/packages/vue-algolia-playground/src/components/Hello.vue b/packages/vue-algolia-playground/src/components/Hello.vue
new file mode 100644
index 0000000000..2d8053956d
--- /dev/null
+++ b/packages/vue-algolia-playground/src/components/Hello.vue
@@ -0,0 +1,53 @@
+
+
+
{{ msg }}
+
Essential Links
+
+
Ecosystem
+
+
+
+
+
+
+
+
diff --git a/packages/vue-algolia-playground/src/main.js b/packages/vue-algolia-playground/src/main.js
new file mode 100644
index 0000000000..c9638375cf
--- /dev/null
+++ b/packages/vue-algolia-playground/src/main.js
@@ -0,0 +1,14 @@
+// The Vue build version to load with the `import` command
+// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
+import Vue from 'vue'
+import App from './App'
+import AlgoliaComponents from 'vue-algolia-components'
+
+Vue.config.productionTip = false
+Vue.use(AlgoliaComponents)
+/* eslint-disable no-new */
+new Vue({
+ el: '#app',
+ template: ' ',
+ components: { App }
+})
diff --git a/packages/vue-algolia-playground/static/.gitkeep b/packages/vue-algolia-playground/static/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/vue-algolia-price-range-facet/package.json b/packages/vue-algolia-price-range-facet/package.json
new file mode 100644
index 0000000000..9eff8300e3
--- /dev/null
+++ b/packages/vue-algolia-price-range-facet/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "vue-algolia-price-range-facet",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-price-range-facet.common.js",
+ "module": "dist/vue-algolia-price-range-facet.esm.js",
+ "jsnext:main": "dist/vue-algolia-price-range-facet.esm.js",
+ "unpkg": "dist/vue-algolia-price-range-facet.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
diff --git a/packages/vue-algolia-price-range-facet/src/PriceRangeFacet.vue b/packages/vue-algolia-price-range-facet/src/PriceRangeFacet.vue
new file mode 100644
index 0000000000..fedcdb3560
--- /dev/null
+++ b/packages/vue-algolia-price-range-facet/src/PriceRangeFacet.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+ {{currency}}
+
+ {{currency}}
+
+ to
+
+ {{currency}}
+
+ {{currency}}
+
+
+
+
+
+
+
+
+
diff --git a/packages/vue-algolia-price-range-facet/src/index.js b/packages/vue-algolia-price-range-facet/src/index.js
new file mode 100644
index 0000000000..530aff90a2
--- /dev/null
+++ b/packages/vue-algolia-price-range-facet/src/index.js
@@ -0,0 +1 @@
+export {default} from './PriceRangeFacet.vue'
diff --git a/packages/vue-algolia-ranged-pagination/package.json b/packages/vue-algolia-ranged-pagination/package.json
new file mode 100644
index 0000000000..50c6ca660e
--- /dev/null
+++ b/packages/vue-algolia-ranged-pagination/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "vue-algolia-ranged-pagination",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-ranged-pagination.common.js",
+ "module": "dist/vue-algolia-ranged-pagination.esm.js",
+ "jsnext:main": "dist/vue-algolia-ranged-pagination.esm.js",
+ "unpkg": "dist/vue-algolia-ranged-pagination.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
diff --git a/packages/vue-algolia-ranged-pagination/src/RangedPagination.vue b/packages/vue-algolia-ranged-pagination/src/RangedPagination.vue
new file mode 100644
index 0000000000..dea4975d9d
--- /dev/null
+++ b/packages/vue-algolia-ranged-pagination/src/RangedPagination.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
diff --git a/packages/vue-algolia-ranged-pagination/src/index.js b/packages/vue-algolia-ranged-pagination/src/index.js
new file mode 100644
index 0000000000..fae908cc01
--- /dev/null
+++ b/packages/vue-algolia-ranged-pagination/src/index.js
@@ -0,0 +1 @@
+export {default} from './RangedPagination.vue'
diff --git a/packages/vue-algolia-results-per-page-selector/package.json b/packages/vue-algolia-results-per-page-selector/package.json
new file mode 100644
index 0000000000..befd7fa1b9
--- /dev/null
+++ b/packages/vue-algolia-results-per-page-selector/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "vue-algolia-results-per-page-selector",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-results-per-page-selector.common.js",
+ "module": "dist/vue-algolia-results-per-page-selector.esm.js",
+ "jsnext:main": "dist/vue-algolia-results-per-page-selector.esm.js",
+ "unpkg": "dist/vue-algolia-results-per-page-selector.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
diff --git a/packages/vue-algolia-results-per-page-selector/src/ResultsPerPageSelector.vue b/packages/vue-algolia-results-per-page-selector/src/ResultsPerPageSelector.vue
new file mode 100644
index 0000000000..2fab34ffb0
--- /dev/null
+++ b/packages/vue-algolia-results-per-page-selector/src/ResultsPerPageSelector.vue
@@ -0,0 +1,46 @@
+
+
+
+ {{ option }}
+
+
+
+
+
diff --git a/packages/vue-algolia-results-per-page-selector/src/index.js b/packages/vue-algolia-results-per-page-selector/src/index.js
new file mode 100644
index 0000000000..5ea7b9d201
--- /dev/null
+++ b/packages/vue-algolia-results-per-page-selector/src/index.js
@@ -0,0 +1 @@
+export {default} from './ResultsPerPageSelector.vue'
diff --git a/packages/vue-algolia-search-facet/package.json b/packages/vue-algolia-search-facet/package.json
new file mode 100644
index 0000000000..128a678b0c
--- /dev/null
+++ b/packages/vue-algolia-search-facet/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "vue-algolia-search-facet",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-search-facet.common.js",
+ "module": "dist/vue-algolia-search-facet.esm.js",
+ "jsnext:main": "dist/vue-algolia-search-facet.esm.js",
+ "unpkg": "dist/vue-algolia-search-facet.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
+
diff --git a/packages/vue-algolia-search-facet/src/SearchFacet.vue b/packages/vue-algolia-search-facet/src/SearchFacet.vue
new file mode 100644
index 0000000000..353c04b75d
--- /dev/null
+++ b/packages/vue-algolia-search-facet/src/SearchFacet.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
diff --git a/packages/vue-algolia-search-facet/src/index.js b/packages/vue-algolia-search-facet/src/index.js
new file mode 100644
index 0000000000..b258f33b7f
--- /dev/null
+++ b/packages/vue-algolia-search-facet/src/index.js
@@ -0,0 +1 @@
+export {default} from './SearchFacet.vue'
diff --git a/packages/vue-algolia-search-input/package.json b/packages/vue-algolia-search-input/package.json
new file mode 100644
index 0000000000..9893918537
--- /dev/null
+++ b/packages/vue-algolia-search-input/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "vue-algolia-search-input",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-search-input.common.js",
+ "module": "dist/vue-algolia-search-input.esm.js",
+ "jsnext:main": "dist/vue-algolia-search-input.esm.js",
+ "unpkg": "dist/vue-algolia-search-input.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
+
diff --git a/packages/vue-algolia-search-input/src/SearchInput.vue b/packages/vue-algolia-search-input/src/SearchInput.vue
new file mode 100644
index 0000000000..8b380bbf37
--- /dev/null
+++ b/packages/vue-algolia-search-input/src/SearchInput.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
diff --git a/packages/vue-algolia-search-input/src/index.js b/packages/vue-algolia-search-input/src/index.js
new file mode 100644
index 0000000000..4b3abab187
--- /dev/null
+++ b/packages/vue-algolia-search-input/src/index.js
@@ -0,0 +1 @@
+export {default} from './SearchInput.vue'
diff --git a/packages/vue-algolia-search-results/package.json b/packages/vue-algolia-search-results/package.json
new file mode 100644
index 0000000000..78d62099a4
--- /dev/null
+++ b/packages/vue-algolia-search-results/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "vue-algolia-search-results",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-search-results.common.js",
+ "module": "dist/vue-algolia-search-results.esm.js",
+ "jsnext:main": "dist/vue-algolia-search-results.esm.js",
+ "unpkg": "dist/vue-algolia-search-results.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
+
+
diff --git a/packages/vue-algolia-search-results/src/SearchResults.vue b/packages/vue-algolia-search-results/src/SearchResults.vue
new file mode 100644
index 0000000000..1aa79b5d57
--- /dev/null
+++ b/packages/vue-algolia-search-results/src/SearchResults.vue
@@ -0,0 +1,67 @@
+
+
+
+ Result 'objectID': {{ hit.objectID }}
+
+
+
+
+
diff --git a/packages/vue-algolia-search-results/src/index.js b/packages/vue-algolia-search-results/src/index.js
new file mode 100644
index 0000000000..33db4da5e3
--- /dev/null
+++ b/packages/vue-algolia-search-results/src/index.js
@@ -0,0 +1,3 @@
+import SearchResults from './SearchResults.vue'
+
+export default SearchResults
diff --git a/packages/vue-algolia-search-stats/package.json b/packages/vue-algolia-search-stats/package.json
new file mode 100644
index 0000000000..9fe74fa549
--- /dev/null
+++ b/packages/vue-algolia-search-stats/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "vue-algolia-search-stats",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-search-stats.common.js",
+ "module": "dist/vue-algolia-search-stats.esm.js",
+ "jsnext:main": "dist/vue-algolia-search-stats.esm.js",
+ "unpkg": "dist/vue-algolia-search-stats.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
+
+
diff --git a/packages/vue-algolia-search-stats/src/SearchStats.vue b/packages/vue-algolia-search-stats/src/SearchStats.vue
new file mode 100644
index 0000000000..a1a1e9bfa5
--- /dev/null
+++ b/packages/vue-algolia-search-stats/src/SearchStats.vue
@@ -0,0 +1,21 @@
+
+
+ {{nbHits}} results found in {{processingTimeMS}}ms
+
+
+
+
diff --git a/packages/vue-algolia-search-stats/src/index.js b/packages/vue-algolia-search-stats/src/index.js
new file mode 100644
index 0000000000..dc067e8605
--- /dev/null
+++ b/packages/vue-algolia-search-stats/src/index.js
@@ -0,0 +1 @@
+export {default} from './SearchStats.vue'
diff --git a/packages/vue-algolia-search-store/package.json b/packages/vue-algolia-search-store/package.json
new file mode 100644
index 0000000000..7a021d3f94
--- /dev/null
+++ b/packages/vue-algolia-search-store/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "vue-algolia-search-store",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-search-store.common.js",
+ "module": "dist/vue-algolia-search-store.esm.js",
+ "jsnext:main": "dist/vue-algolia-search-store.esm.js",
+ "unpkg": "dist/vue-algolia-search-store.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "algolia-search-store": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
+
+
+
diff --git a/packages/vue-algolia-search-store/src/SearchStore.vue b/packages/vue-algolia-search-store/src/SearchStore.vue
new file mode 100644
index 0000000000..abd32fe7de
--- /dev/null
+++ b/packages/vue-algolia-search-store/src/SearchStore.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
diff --git a/packages/vue-algolia-search-store/src/index.js b/packages/vue-algolia-search-store/src/index.js
new file mode 100644
index 0000000000..8e86f8bf55
--- /dev/null
+++ b/packages/vue-algolia-search-store/src/index.js
@@ -0,0 +1 @@
+export {default} from './SearchStore.vue'
diff --git a/packages/vue-algolia-sort-by-selector/package.json b/packages/vue-algolia-sort-by-selector/package.json
new file mode 100644
index 0000000000..ae14feb4a9
--- /dev/null
+++ b/packages/vue-algolia-sort-by-selector/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "vue-algolia-sort-by-selector",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-sort-by-selector.common.js",
+ "module": "dist/vue-algolia-sort-by-selector.esm.js",
+ "jsnext:main": "dist/vue-algolia-sort-by-selector.esm.js",
+ "unpkg": "dist/vue-algolia-sort-by-selector.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
+
+
+
diff --git a/packages/vue-algolia-sort-by-selector/src/SortBySelector.vue b/packages/vue-algolia-sort-by-selector/src/SortBySelector.vue
new file mode 100644
index 0000000000..4e5e2347a5
--- /dev/null
+++ b/packages/vue-algolia-sort-by-selector/src/SortBySelector.vue
@@ -0,0 +1,54 @@
+
+
+
+
+ {{ index.label }}
+
+
+
+
+
+
+
diff --git a/packages/vue-algolia-sort-by-selector/src/index.js b/packages/vue-algolia-sort-by-selector/src/index.js
new file mode 100644
index 0000000000..27a879bb74
--- /dev/null
+++ b/packages/vue-algolia-sort-by-selector/src/index.js
@@ -0,0 +1 @@
+export {default} from './SortBySelector.vue'
diff --git a/packages/vue-algolia-stars-facet/package.json b/packages/vue-algolia-stars-facet/package.json
new file mode 100644
index 0000000000..378d5cacf3
--- /dev/null
+++ b/packages/vue-algolia-stars-facet/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "vue-algolia-stars-facet",
+ "version": "0.0.0",
+ "files": [
+ "dist"
+ ],
+ "main": "dist/vue-algolia-stars-facet.common.js",
+ "module": "dist/vue-algolia-stars-facet.esm.js",
+ "jsnext:main": "dist/vue-algolia-stars-facet.esm.js",
+ "unpkg": "dist/vue-algolia-stars-facet.js",
+ "scripts": {
+ "build": "yarn build-umd && yarn build-es && yarn build-cjs",
+ "build-umd": "rollup -c ../../build/rollup.umd.config.js",
+ "build-es": "rollup -c ../../build/rollup.es.config.js",
+ "build-cjs": "rollup -c ../../build/rollup.cjs.config.js"
+ },
+ "dependencies": {
+ "vue-algolia-component": "*"
+ },
+ "peerDependencies": {
+ "vue": "^2.2.2"
+ }
+}
+
+
+
+
diff --git a/packages/vue-algolia-stars-facet/src/StarsFacet.vue b/packages/vue-algolia-stars-facet/src/StarsFacet.vue
new file mode 100644
index 0000000000..9302e58854
--- /dev/null
+++ b/packages/vue-algolia-stars-facet/src/StarsFacet.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+ Clear
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/vue-algolia-stars-facet/src/index.js b/packages/vue-algolia-stars-facet/src/index.js
new file mode 100644
index 0000000000..824fc34d68
--- /dev/null
+++ b/packages/vue-algolia-stars-facet/src/index.js
@@ -0,0 +1 @@
+export {default} from './StarsFacet.vue'
diff --git a/packages/vue-instantsearch/README.md b/packages/vue-instantsearch/README.md
new file mode 100644
index 0000000000..b8bd13d100
--- /dev/null
+++ b/packages/vue-instantsearch/README.md
@@ -0,0 +1,31 @@
+Algolia components for Vue.js
+-----------------------------
+
+This project uses [Lerna](https://github.com/lerna/lerna) to orchestrate the all the packages.
+
+To get started you should:
+
+```
+# Install Lerna globally
+yarn global add lerna
+
+# Install dependencies common to the packages
+yarn install
+
+# Download all dependencies
+lerna bootstrap
+
+# Build all the packages
+lerna run build
+```
+
+## Lerna caveats (probably because of Yarn)
+
+Sometimes your builds will fail because of incorrect dependencies resolution. If that happens, the easiest fix is
+to delete all `node_modules` folders and to bootstrap again.
+
+```
+rm -rf ./packages/*/node_modules
+lerna bootstrap
+```
+