feat: Migrate from webpack to Vite and Vue 2 to Vue 3 - #196
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR migrates the app’s frontend toolchain from webpack to Vite and upgrades the UI layer from Vue 2 to Vue 3, aligning the build output and component bindings with the newer Nextcloud/Vue ecosystem.
Changes:
- Replaced webpack configuration with
@nextcloud/vite-config-basedvite.config.tsand updated asset inclusion in the PHP template. - Updated Vue entrypoint and multiple components to Vue 3 patterns (e.g.,
createApp,v-model:*,model-value, named slots) and switched@nextcloud/vueimports to the package entrypoint. - Updated TS/style tooling config and bumped runtime/dev dependencies to Vite/Vue 3 compatible versions.
Reviewed changes
Copilot reviewed 18 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| webpack.js | Removed legacy webpack build configuration. |
| vite.config.ts | Added Vite build configuration using @nextcloud/vite-config. |
| tsconfig.json | Simplified/updated TS configuration for the new toolchain/output structure. |
| templates/index.php | Updated script/style asset names to match new build output. |
| stylelint.config.cjs | Added Stylelint config for Vue SFC linting. |
| src/shims-vue.d.ts | Updated Vue SFC module typing for Vue 3. |
| src/service/PersonalInfo/PersonalInfoService.js | Updated password-confirmation stylesheet import path. |
| src/main.ts | Migrated Vue 2 bootstrapping to Vue 3 app creation and Pinia integration. |
| src/components/security/AuthTokenSetupDialog.vue | Updated bindings/imports for Vue 3 + @nextcloud/vue entrypoint. |
| src/components/security/AuthTokenSetup.vue | Updated v-model usage and imports for Vue 3. |
| src/components/security/AuthToken.vue | Updated v-model usage, action menu binding, and imports for Vue 3. |
| src/components/navigation/Navigation.vue | Migrated slot syntax to named slots and updated imports. |
| src/components/help/Software.vue | Updated @nextcloud/vue import style for Vue 3. |
| src/components/files/WebDavUrl.vue | Updated input binding props and imports for Vue 3. |
| src/components/account/Quota.vue | Updated @nextcloud/vue imports and adjusted progress bar/color initialization. |
| src/components/account/LanguageSection.vue | Updated .sync usage to Vue 3 v-model:*. |
| src/components/account/Language.vue | Updated select binding prop and imports for Vue 3. |
| src/App.vue | Adjusted layout CSS to account for viewport height and overflow. |
| package.json | Updated scripts/tooling and dependencies for Vite + Vue 3. |
| Makefile | Updated packaging excludes for the new build config file. |
| .gitignore | Updated ignored build artifact directories to match Vite outputs. |
| .eslintrc.cjs | Adjusted ESLint rules for Vue 3 syntax (e.g., v-model:*). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
3 tasks
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
…buttons Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
@nextcloud/webpack-vue-config 6.0.1 → 6.3.2 (bumped in 8ea7ae2) sets devtool: 'source-map', which conflicts with the explicit SourceMapDevToolPlugin. webpack 5 treats duplicate asset output as an error, breaking the build. Signed-off-by: Kai Henseler <kai.henseler@strato.de>
…plesettings context lets ensure that script addition happens in proper context inspired by https://github.com/IONOS-Productivity/nc-server/blob/e68ddae1e3c1e4532043f07bbc1bd9d1c96aa8a1/apps/files/lib/Controller/ViewController.php#L188 Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de> Co-authored-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
…nit reset for NC32 OC_Util has no $scripts property in NC32 — setting it triggers a PHP 8.2 dynamic-property deprecation that causes --fail-on-risky to mark all 8 tests as errors (2 deprecations each from setUp/tearDown). Replace with proper NC32 reset: drop OC_Util::$scripts and add the missing $scriptsInit from OCP\Util.
Migrate the build system from webpack to Vite and upgrade the application from Vue 2 to Vue 3. Update all dependencies to compatible versions, including @nextcloud packages, TypeScript, and related tooling. Update component syntax to use Vue 3 composition API and template features like v-model:prop and named slots. Replace webpack configuration with vite.config.ts and update build scripts accordingly.
bromiesTM
force-pushed
the
kh/dev/migrate-to-vite
branch
from
July 27, 2026 07:16
0e82085 to
a07adf2
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 23 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
Makefile:138
- The appstore packaging excludes
stylelint.config.js, but the repo now usesstylelint.config.cjs(and nostylelint.config.jsexists). This will cause the new Stylelint config to be included in the release tarball unintentionally.
--exclude="../${app_name}/vite.config.ts" \
--exclude="../$(app_name)/stylelint.config.js" \
- Reorder vite flags to place `--mode` after `build` - Rename stylelint config from `.js` to `.cjs`
…t linting" This reverts commit 95bf99d.
…nalysis from https://github.com/nextcloud/app_template Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
… of update via https://github.com/nextcloud/app_template Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
via https://github.com/nextcloud/app_template Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
via https://github.com/nextcloud/app_template Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
via https://github.com/nextcloud/app_template Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…trix.yml via https://github.com/nextcloud/app_template Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
via https://github.com/nextcloud/app_template Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
The data() and mounted() options were indented one tab shallower than their siblings, failing the eslint indent rule in CI. Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
The components imported core/css/variables.scss through relative '..' chains that hardcoded the app's depth inside a server checkout. Standalone checkouts, such as the CI build, have no server tree above them, so sass could not find the stylesheet and the Vite build failed. Resolve the file through a '@nc-core-variables' alias instead. The alias points at the real core stylesheet whenever a server tree is present, and otherwise falls back to a bundled mirror of the single variable this app uses ($breakpoint-mobile), warning when it does so. Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
printminion-co
force-pushed
the
kh/dev/migrate-to-vite
branch
from
July 27, 2026 15:24
dcb15e8 to
bb0207b
Compare
printminion-co
approved these changes
Jul 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Migrate the build system from webpack to Vite and upgrade the application from Vue 2 to Vue 3. Update all dependencies to compatible versions, including @nextcloud packages, TypeScript, and related tooling.
Update component syntax to use Vue 3 composition API and template features
like v-model:prop and named slots. Replace webpack configuration with vite.config.ts and update build scripts accordingly.