Test using vue-cli configured to hold multiple distinct websites with their own public folder and entry points.
custom-public | ||
public | ||
src | ||
.gitignore | ||
babel.config.js | ||
package-lock.json | ||
package.json | ||
README.md | ||
vue.config.js |
Vue CLI Multisite Base Example
Just some stuff I hacked together to get a vue-cli created app to support
multiple sites. Key things to look at compared to a base vue create <app>
site:
- package.json:
- Customizes the
npm run build
commands to support multiple sites, an "admin" and a "main" site. Each one has a custom dist/ output folder (--dest option) and a custom entry point (e.g. "./src/admin/index.js" instead of default "./src/main.js")
- Customizes the
- vue.config.js:
- This file needs to be added to a Vue project, as it's not there by default. It configures the html-webpack-plugin to change the name of the "public" folder that gets put into the dist/ folder; so each site can have its own public folder.
- Uses environment variable SITE_NAME to choose the public folder to use.
- custom-public/ is for the admin site and added a "hello.txt" to verify correct functionality. The main site uses the public/ folder like normal.
So when you run npm run build-admin
it creates dist-admin/
taking the
custom-public folder and the admin entrypoint. npm run build-main
creates the
dist/
folder and the normal public folder.
Project setup
npm install
Compiles and hot-reloads for development
npm run serve
Compiles and minifies for production
npm run build
Lints and fixes files
npm run lint