nextcloud-vue icon indicating copy to clipboard operation
nextcloud-vue copied to clipboard

feat: add nextcloud-vue-import-transform script

Open ShGKme opened this issue 1 year ago • 3 comments

☑️ Resolves

  • PRs in apps:
    • https://github.com/nextcloud/firstrunwizard/pull/1262

Imports from re-export are not optimal, having tree-shaking issues

import {
  NcButton as Button,
  useIsSmallMobile,
} as '@nextcloud/vue'

Individual imports are more optimal

import NcButton as Button from '@nextcloud/vue/dist/Components/NcButton.js'
import { useIsSmallMobile } from '@nextcloud/vue/dist/Composables/useIsMobile.js'

But changing it manually is painful for a huge app.

This script makes it automatically and tells if some imports cannot be processed.

Example

$ node ./scripts/nextcloud-vue-import-transform.mjs ../nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/ --dry

Transforming imports in /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/app-menu.js [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/AppStoreBadge.vue [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/Card.vue [checked]
✅ /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/SlideShow.vue [transformed]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/WizardPage.vue [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/pages/AboutNextcloud.vue [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/pages/DeviceIntegration.vue [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/pages/HubRelease.vue [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/pages/IntroAnimation.vue [checked]
✅ /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/pages/KeyNotes.vue [transformed]
✅ /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/pages/SharePage.vue [transformed]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/components/pages/WhatsNew.vue [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/first-run.js [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/global-shim.d.ts [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/hub-release.ts [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/main.js [checked]
👀 /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/pages.ts [checked]
✅ /home/shgk/nextcloud/nextcloud-docker-dev/data/apps-extra/firstrunwizard/src/views/App.vue [transformed]

ShGKme avatar Jun 21 '24 21:06 ShGKme

Maybe it makes sense to have this in the eslint plugin or so?

susnux avatar Jun 22 '24 14:06 susnux

Maybe it makes sense to have this in the eslint plugin or so?

Makes sense but I wanted to play with different apps to see if it actually makes result better, not worse.

ShGKme avatar Jun 22 '24 19:06 ShGKme

Makes sense but I wanted to play with different apps to see if it actually makes result better, not worse.

As soon as you use NcRichText it makes no real difference, otherwise it reduces transformation time and output size. Meaning for text app this does not help (10kB difference), but other work nicely.

But this is especially helpful for libraries that are later used by Webpack, like nc dialogs.

susnux avatar Aug 30 '24 14:08 susnux