Skip to content

Commit 4ab91a7

Browse files
authored
feat(vue): Migrate vue build from vue/cli to vite (#972)
* feat(vue): Implemented vte build for vue applications * vhange npx to npm * fix add view issue * fix formatting * fix: remove unnecessary bumps * fix: Add lint to the new vue app * fix: remove example code * fix non logical linter errors * lint error fix for vue files * fix: Add sass-embedded for consistency * fix: Fix vite versions to avoid problems with the new 7.0.0 * revert fixing version
1 parent 3579a6b commit 4ab91a7

File tree

9 files changed

+50
-24
lines changed

9 files changed

+50
-24
lines changed

packages/devextreme-cli/src/applications/application.vue.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ const defaultStyles = [
1616

1717
const preparePackageJsonForTemplate = (appPath, appName) => {
1818
const dependencies = [
19-
{ name: 'sass', version: '^1.34.1' },
19+
{ name: 'sass-embedded', version: '^1.85.1' },
2020
{ name: 'vue-router', version: '^3.0.1' },
21-
{ name: 'devextreme-cli', version: latestVersions['devextreme-cli'], dev: true },
22-
{ name: 'sass-loader', version: '^10', dev: true }
21+
{ name: 'devextreme-cli', version: latestVersions['devextreme-cli'], dev: true }
2322
];
2423

2524
const nameDepends = dependencies.map(d => d.name);
@@ -38,18 +37,14 @@ const preparePackageJsonForTemplate = (appPath, appName) => {
3837
};
3938

4039
async function createVueApp(name, depsVersionTag) {
41-
const argList = ['-p', `@vue/cli@${depsVersionTag}`, 'vue', 'create', name, '--registry', 'https://registry.npmjs.org/', '-p "Default (Vue 3)"'];
42-
43-
return runCommand('npx', argList);
40+
const argList = ['create', `vue${depsVersionTag ? `@${depsVersionTag}` : ''}`, name, '--registry', 'https://registry.npmjs.org/', '--', '--eslint', '--default', '--bare'];
41+
return runCommand('npm', argList);
4442
}
4543

4644
const bumpVue = (appPath, versionTag) => {
4745
const dependencies = [
4846
{ name: 'vue', version: versionTag },
4947
{ name: 'vue-router', version: versionTag },
50-
{ name: '@vue/cli-plugin-babel', version: versionTag, dev: true },
51-
{ name: '@vue/cli-plugin-eslint', version: versionTag, dev: true },
52-
{ name: '@vue/cli-service', version: versionTag, dev: true },
5348
];
5449

5550
packageJsonUtils.addDependencies(appPath, dependencies);
@@ -78,7 +73,7 @@ const create = async(appName, options) => {
7873
};
7974

8075
const modifyIndexHtml = (appPath, appName) => {
81-
const indexHtmlPath = path.join(appPath, 'public', 'index.html');
76+
const indexHtmlPath = path.join(appPath, 'index.html');
8277
let htmlContent = fs.readFileSync(indexHtmlPath).toString();
8378

8479
htmlContent = htmlContent.replace(/<title>(\w+\s*)+<\/title>/, `<title>${appName}<\/title>`);
@@ -175,7 +170,7 @@ const addView = (pageName, options) => {
175170
const navigationData = getNavigationData(pageName, componentName, options && options.icon || 'folder');
176171
const getCorrectExtension = (fileExtension) => fileExtension;
177172
templateCreator.addPageToApp(pageName, pathToPage, pageTemplatePath, getCorrectExtension);
178-
moduleUtils.insertImport(routingModulePath, `./views/${pageName}`, componentName, true);
173+
moduleUtils.insertImport(routingModulePath, `./views/${pageName}.vue`, componentName, true);
179174
insertItemToArray(routingModulePath, navigationData.route);
180175
insertItemToArray(navigationModulePath, navigationData.navigation);
181176
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { defineConfig, globalIgnores } from 'eslint/config'
2+
import globals from 'globals'
3+
import js from '@eslint/js'
4+
import pluginVue from 'eslint-plugin-vue'
5+
6+
export default defineConfig([
7+
{
8+
name: 'app/files-to-lint',
9+
files: ['**/*.{js,mjs,jsx,vue}'],
10+
},
11+
12+
globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),
13+
14+
{
15+
languageOptions: {
16+
globals: {
17+
...globals.browser,
18+
},
19+
},
20+
},
21+
22+
js.configs.recommended,
23+
...pluginVue.configs['flat/essential'],
24+
25+
{
26+
name: 'disable-unused-vars-in-vue',
27+
files: ['**/*.vue'],
28+
rules: {
29+
'no-unused-vars': 'off',
30+
},
31+
},
32+
])

packages/devextreme-cli/src/templates/vue-v3/application/src/App.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
</template>
1818

1919
<script>
20-
import AppFooter from "./components/app-footer";
20+
import AppFooter from "./components/app-footer.vue";
2121
import { sizes, subscribe, unsubscribe } from "./utils/media-query";
2222
import {
2323
getCurrentInstance,

packages/devextreme-cli/src/templates/vue-v3/application/src/components/header-toolbar.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ import auth from "../auth";
5252
import { useRouter, useRoute } from 'vue-router';
5353
import { ref } from 'vue';
5454
55-
import UserPanel from "./user-panel";
55+
import UserPanel from "./user-panel.vue";
5656
import ThemeSwitcher from './theme-switcher.vue';
5757
5858
export default {

packages/devextreme-cli/src/templates/vue-v3/application/src/layouts/side-nav-inner-toolbar.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ import DxDrawer from "devextreme-vue/drawer";
5757
import DxScrollView from "devextreme-vue/scroll-view";
5858
import DxToolbar, { DxItem } from "devextreme-vue/toolbar";
5959
60-
import HeaderToolbar from "../components/header-toolbar";
61-
import SideNavMenu from "../components/side-nav-menu";
60+
import HeaderToolbar from "../components/header-toolbar.vue";
61+
import SideNavMenu from "../components/side-nav-menu.vue";
6262
import menuItems from "../app-navigation";
6363
import { ref, watch, computed } from 'vue';
6464
import { useRoute } from 'vue-router';

packages/devextreme-cli/src/templates/vue-v3/application/src/layouts/side-nav-outer-toolbar.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ import DxDrawer from "devextreme-vue/drawer";
3939
import DxScrollView from "devextreme-vue/scroll-view";
4040
4141
import menuItems from "../app-navigation";
42-
import HeaderToolbar from "../components/header-toolbar";
43-
import SideNavMenu from "../components/side-nav-menu";
42+
import HeaderToolbar from "../components/header-toolbar.vue";
43+
import SideNavMenu from "../components/side-nav-menu.vue";
4444
import { computed, ref, watch} from 'vue';
4545
import { useRoute } from 'vue-router';
4646

packages/devextreme-cli/src/templates/vue-v3/application/src/main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { createApp } from "vue";
22
import router from "./router";
33
import themes from "devextreme/ui/themes";
44

5-
import App from "./App";
5+
import App from "./App.vue";
66
import appInfo from "./app-info";
77

88
themes.initialized(() => {

packages/devextreme-cli/src/templates/vue-v3/application/src/router.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import auth from "./auth";
22
import { createRouter, createWebHashHistory } from "vue-router";
33

4-
<%=^empty%>import Home from "./views/home-page";
5-
import Profile from "./views/profile-page";
6-
import Tasks from "./views/tasks-page";
7-
<%=/empty%>import defaultLayout from "./layouts/<%=layout%>";
8-
import simpleLayout from "./layouts/single-card";
4+
<%=^empty%>import Home from "./views/home-page.vue";
5+
import Profile from "./views/profile-page.vue";
6+
import Tasks from "./views/tasks-page.vue";
7+
<%=/empty%>import defaultLayout from "./layouts/<%=layout%>.vue";
8+
import simpleLayout from "./layouts/single-card.vue";
99

1010
function loadView(view) {
1111
return () => import (/* webpackChunkName: "login" */ `./views/${view}.vue`)

packages/devextreme-cli/src/templates/vue-v3/application/vue.config.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)