diff --git a/babel.config.js b/babel.config.js
index 078c0056..a79d1195 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,3 +1,3 @@
module.exports = {
- presets: ['@vue/cli-plugin-babel/preset'],
+ presets: ['@babel/preset-env'],
};
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..2b6ad1e9
--- /dev/null
+++ b/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+ FreqUI
+
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
index 1d4248ea..99f6f2dd 100644
--- a/package.json
+++ b/package.json
@@ -3,12 +3,13 @@
"version": "0.1.0",
"private": true,
"scripts": {
- "serve": "vue-cli-service serve",
- "build": "vue-cli-service build",
- "test:unit": "vue-cli-service test:unit",
- "lint": "vue-cli-service lint",
+ "serve": "vite",
+ "dev": "vite",
+ "build": "vite build --mode prod",
+ "test:unit": "jest",
"check-types": "tsc --noemit",
- "lint-ci": "vue-cli-service lint --no-fix",
+ "lint": "eslint",
+ "lint-ci": "eslint --no-fix",
"cy:open": "cypress open",
"cy:run": "cypress run",
"cy:open-ct": "cypress open-ct",
@@ -37,7 +38,6 @@
"vue-router": "^3.5.3",
"vue-select": "^3.16.0",
"vuex": "^3.6.2",
- "vuex-class": "^0.3.2",
"vuex-composition-helpers": "^1.1.0"
},
"devDependencies": {
@@ -46,13 +46,6 @@
"@types/jest": "^27.4.0",
"@typescript-eslint/eslint-plugin": "^2.33.0",
"@typescript-eslint/parser": "^5.10.2",
- "@vue/cli-plugin-babel": "~4.5.15",
- "@vue/cli-plugin-eslint": "~4.5.15",
- "@vue/cli-plugin-router": "^4.5.15",
- "@vue/cli-plugin-typescript": "~4.5.15",
- "@vue/cli-plugin-unit-jest": "~4.5.15",
- "@vue/cli-plugin-vuex": "~4.5.15",
- "@vue/cli-service": "~4.5.15",
"@vue/eslint-config-airbnb": "^5.1.0",
"@vue/eslint-config-prettier": "^6.0.0",
"@vue/eslint-config-typescript": "^5.1.0",
@@ -62,7 +55,7 @@
"eslint-config-airbnb": "^18.2.1",
"eslint-plugin-prettier": "^3.4.1",
"eslint-plugin-vue": "^7.20.0",
- "html-webpack-plugin": "4",
+ "jest": "~26.6.3",
"mutationobserver-shim": "^0.3.7",
"popper.js": "^1.16.1",
"portal-vue": "^2.1.7",
@@ -70,6 +63,8 @@
"sass": "^1.49.7",
"sass-loader": "^10.1.1",
"typescript": "~4.5.5",
+ "vite": "^2.3.3",
+ "vite-plugin-vue2": "^1.5.1",
"vue-template-compiler": "^2.6.14",
"vuex-class": "^0.3.2"
}
diff --git a/public/index.html b/public/index.html
deleted file mode 100644
index 8910c5bc..00000000
--- a/public/index.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
- <%= htmlWebpackPlugin.options.title %>
-
-
-
-
-
-
-
diff --git a/src/env.d.ts b/src/env.d.ts
new file mode 100644
index 00000000..930d6fe2
--- /dev/null
+++ b/src/env.d.ts
@@ -0,0 +1,9 @@
+/* Provide Type for Vite's import.meta.env structure */
+interface ImportMeta {
+ env: {
+ BASE_URL: string;
+ MODE: string;
+ PROD: boolean;
+ DEV: boolean;
+ };
+}
diff --git a/src/router/index.ts b/src/router/index.ts
index ce4cad45..023a5ba8 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -20,27 +20,27 @@ const routes: Array = [
{
path: '/trade',
name: 'Freqtrade Trading',
- component: () => import(/* webpackChunkName: "trade" */ '@/views/Trading.vue'),
+ component: () => import('@/views/Trading.vue'),
},
{
path: '/graph',
name: 'Freqtrade Graph',
- component: () => import(/* webpackChunkName: "graph" */ '@/views/Graphs.vue'),
+ component: () => import('@/views/Graphs.vue'),
},
{
path: '/logs',
name: 'Freqtrade Logs',
- component: () => import(/* webpackChunkName: "graph" */ '@/views/LogView.vue'),
+ component: () => import('@/views/LogView.vue'),
},
{
path: '/backtest',
name: 'Freqtrade Backtest',
- component: () => import(/* webpackChunkName: "backtest" */ '@/views/Backtesting.vue'),
+ component: () => import( '@/views/Backtesting.vue'),
},
{
path: '/dashboard',
name: 'Freqtrade Dashboard',
- component: () => import(/* webpackChunkName: "dashboard" */ '@/views/Dashboard.vue'),
+ component: () => import('@/views/Dashboard.vue'),
},
{
path: '/balance',
@@ -65,12 +65,12 @@ const routes: Array = [
{
path: '/settings',
name: 'Freqtrade Settings',
- component: () => import(/* webpackChunkName: "dashboard" */ '@/views/Settings.vue'),
+ component: () => import( '@/views/Settings.vue'),
},
{
path: '/login',
name: 'Login',
- component: () => import(/* webpackChunkName: "login" */ '@/views/LoginView.vue'),
+ component: () => import('@/views/LoginView.vue'),
meta: {
allowAnonymous: true,
},
@@ -84,7 +84,7 @@ const routes: Array = [
const router = new VueRouter({
mode: 'history',
- base: process.env.BASE_URL,
+ base: import.meta.env.BASE_URL,
routes,
});
diff --git a/src/store/index.ts b/src/store/index.ts
index 089fd643..73678fcb 100644
--- a/src/store/index.ts
+++ b/src/store/index.ts
@@ -60,7 +60,7 @@ const store = new Vuex.Store({
commit('setLoggedIn', loggedin);
},
async loadUIVersion({ commit }) {
- if (process.env.NODE_ENV !== 'development') {
+ if (import.meta.env.PROD) {
try {
const result = await axios.get('/ui_version');
const { version } = result.data;
diff --git a/src/styles/main.scss b/src/styles/main.scss
index c0f48872..37f6c6c4 100644
--- a/src/styles/main.scss
+++ b/src/styles/main.scss
@@ -1,8 +1,8 @@
@import 'bootstrap_variables_ovw';
-@import '~bootstrap/scss/bootstrap';
-@import '~bootstrap-vue/src/index';
+@import 'bootstrap/scss/bootstrap';
+@import 'bootstrap-vue/src/index';
@import "vue-select/src/scss/vue-select.scss";
@import 'variables';
diff --git a/src/views/Error404.vue b/src/views/Error404.vue
index d9a53289..11a9a3a1 100644
--- a/src/views/Error404.vue
+++ b/src/views/Error404.vue
@@ -2,7 +2,8 @@
404 Error.
Ahhhhhhhh! The page you are looking for does not exist.
-
Don't worry, you can head back to the main page.
+
Don't worry, you can head back to
+ the main page.
diff --git a/src/views/Home.vue b/src/views/Home.vue
index 54dc09b5..76950a8d 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -31,12 +31,13 @@ import BotList from '@/components/BotList.vue';
export default class Home extends Vue {}
-