Skip to content

feat: Migrate from webpack to Vite and Vue 2 to Vue 3 - #196

Merged
bromiesTM merged 20 commits into
ionos-dev-v33from
kh/dev/migrate-to-vite
Jul 29, 2026
Merged

feat: Migrate from webpack to Vite and Vue 2 to Vue 3#196
bromiesTM merged 20 commits into
ionos-dev-v33from
kh/dev/migrate-to-vite

Conversation

@bromiesTM

Copy link
Copy Markdown
Contributor

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
bromiesTM marked this pull request as ready for review July 21, 2026 09:12

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-based vite.config.ts and 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/vue imports 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.

Comment thread package.json Outdated
Comment thread Makefile Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 19 out of 24 changed files in this pull request and generated no new comments.

tanyaka and others added 8 commits July 24, 2026 15:37
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.
@bromiesTM
bromiesTM changed the base branch from merge-v31-to-v32 to ionos-dev-v32.0.6 July 27, 2026 07:06
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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 uses stylelint.config.cjs (and no stylelint.config.js exists). 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`

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 18 out of 23 changed files in this pull request and generated 2 comments.

Comment thread package.json
Comment thread package.json
…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>
…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>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 34 out of 40 changed files in this pull request and generated 2 comments.

Comment thread package.json
Comment thread .github/workflows/psalm-matrix.yml

@printminion-co printminion-co left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

review ok with some additions from me.
Also the .content is not full width on big screens. See scrrenshot

Image

not a deal breaking change for me.

@bromiesTM
bromiesTM changed the base branch from ionos-dev-v32.0.6 to ionos-dev-v33 July 29, 2026 12:09
@bromiesTM
bromiesTM merged commit c33dd74 into ionos-dev-v33 Jul 29, 2026
47 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants