From 6a5b2098e1c9573fd050b0d56d0f85516f10c32b Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 12 Aug 2024 08:02:03 +0800 Subject: [PATCH] workflow: move private packages to separate directory --- .github/contributing.md | 4 +- .github/renovate.json5 | 4 +- eslint.config.js | 11 +- package.json | 6 +- .../dts-built-test/README.md | 2 +- .../dts-built-test/package.json | 2 +- .../dts-built-test/src/index.ts | 0 .../dts-built-test/tsconfig.json | 0 .../dts-test/README.md | 2 +- .../dts-test/appDirective.test-d.ts | 0 .../dts-test/appUse.test-d.ts | 0 .../dts-test/built.test-d.ts | 2 +- .../dts-test/compiler.test-d.ts | 0 .../dts-test/component.test-d.ts | 0 .../dts-test/componentInstance.test-d.tsx | 0 .../componentTypeExtensions.test-d.tsx | 0 .../dts-test/defineComponent.test-d.tsx | 0 .../dts-test/defineCustomElement.test-d.ts | 0 .../dts-test/directives.test-d.ts | 0 .../dts-test/extractProps.test-d.ts | 0 .../dts-test/functionalComponent.test-d.tsx | 0 .../dts-test/h.test-d.ts | 0 .../dts-test/inject.test-d.ts | 0 .../dts-test/package.json | 2 +- .../dts-test/reactivity.test-d.ts | 0 .../dts-test/ref.test-d.ts | 0 .../dts-test/setupHelpers.test-d.ts | 0 .../dts-test/tsconfig.test.json | 0 .../dts-test/tsx.test-d.tsx | 0 .../dts-test/utils.d.ts | 0 .../dts-test/watch.test-d.ts | 0 .../sfc-playground/README.md | 0 .../sfc-playground/index.html | 0 .../sfc-playground/package.json | 2 +- .../sfc-playground/public/logo.svg | 0 .../sfc-playground/src/App.vue | 0 .../sfc-playground/src/Header.vue | 2 +- .../sfc-playground/src/VersionSelect.vue | 0 .../sfc-playground/src/download/download.ts | 0 .../src/download/template/README.md | 0 .../src/download/template/index.html | 0 .../src/download/template/main.js | 0 .../src/download/template/package.json | 0 .../src/download/template/vite.config.js | 0 .../sfc-playground/src/icons/Copy.vue | 0 .../sfc-playground/src/icons/Download.vue | 0 .../sfc-playground/src/icons/GitHub.vue | 0 .../sfc-playground/src/icons/Moon.vue | 0 .../sfc-playground/src/icons/Reload.vue | 0 .../sfc-playground/src/icons/Share.vue | 0 .../sfc-playground/src/icons/Sun.vue | 0 .../sfc-playground/src/main.ts | 0 .../sfc-playground/src/vue-dev-proxy-prod.ts | 0 .../sfc-playground/src/vue-dev-proxy.ts | 0 .../src/vue-server-renderer-dev-proxy.ts | 0 .../sfc-playground/vercel.json | 0 .../sfc-playground/vite.config.ts | 12 +- .../template-explorer/README.md | 0 .../template-explorer/_redirects | 0 .../template-explorer/index.html | 0 .../template-explorer/local.html | 0 .../template-explorer/package.json | 0 .../template-explorer/src/index.ts | 0 .../template-explorer/src/options.ts | 0 .../template-explorer/src/theme.ts | 0 .../template-explorer/style.css | 0 packages-private/vite-debug/App.vue | 15 +++ packages-private/vite-debug/README.md | 1 + packages-private/vite-debug/index.html | 2 + packages-private/vite-debug/main.ts | 6 + packages-private/vite-debug/package.json | 15 +++ packages-private/vite-debug/tsconfig.json | 7 ++ packages-private/vite-debug/vite.config.ts | 6 + pnpm-lock.yaml | 119 ++++++++++-------- pnpm-workspace.yaml | 2 + rollup.config.js | 7 +- scripts/build.js | 17 ++- scripts/utils.js | 29 +++-- tsconfig.json | 5 +- vitest.config.ts | 2 +- 80 files changed, 187 insertions(+), 97 deletions(-) rename {packages => packages-private}/dts-built-test/README.md (65%) rename {packages => packages-private}/dts-built-test/package.json (85%) rename {packages => packages-private}/dts-built-test/src/index.ts (100%) rename {packages => packages-private}/dts-built-test/tsconfig.json (100%) rename {packages => packages-private}/dts-test/README.md (52%) rename {packages => packages-private}/dts-test/appDirective.test-d.ts (100%) rename {packages => packages-private}/dts-test/appUse.test-d.ts (100%) rename {packages => packages-private}/dts-test/built.test-d.ts (82%) rename {packages => packages-private}/dts-test/compiler.test-d.ts (100%) rename {packages => packages-private}/dts-test/component.test-d.ts (100%) rename {packages => packages-private}/dts-test/componentInstance.test-d.tsx (100%) rename {packages => packages-private}/dts-test/componentTypeExtensions.test-d.tsx (100%) rename {packages => packages-private}/dts-test/defineComponent.test-d.tsx (100%) rename {packages => packages-private}/dts-test/defineCustomElement.test-d.ts (100%) rename {packages => packages-private}/dts-test/directives.test-d.ts (100%) rename {packages => packages-private}/dts-test/extractProps.test-d.ts (100%) rename {packages => packages-private}/dts-test/functionalComponent.test-d.tsx (100%) rename {packages => packages-private}/dts-test/h.test-d.ts (100%) rename {packages => packages-private}/dts-test/inject.test-d.ts (100%) rename {packages => packages-private}/dts-test/package.json (74%) rename {packages => packages-private}/dts-test/reactivity.test-d.ts (100%) rename {packages => packages-private}/dts-test/ref.test-d.ts (100%) rename {packages => packages-private}/dts-test/setupHelpers.test-d.ts (100%) rename {packages => packages-private}/dts-test/tsconfig.test.json (100%) rename {packages => packages-private}/dts-test/tsx.test-d.tsx (100%) rename {packages => packages-private}/dts-test/utils.d.ts (100%) rename {packages => packages-private}/dts-test/watch.test-d.ts (100%) rename {packages => packages-private}/sfc-playground/README.md (100%) rename {packages => packages-private}/sfc-playground/index.html (100%) rename {packages => packages-private}/sfc-playground/package.json (90%) rename {packages => packages-private}/sfc-playground/public/logo.svg (100%) rename {packages => packages-private}/sfc-playground/src/App.vue (100%) rename {packages => packages-private}/sfc-playground/src/Header.vue (98%) rename {packages => packages-private}/sfc-playground/src/VersionSelect.vue (100%) rename {packages => packages-private}/sfc-playground/src/download/download.ts (100%) rename {packages => packages-private}/sfc-playground/src/download/template/README.md (100%) rename {packages => packages-private}/sfc-playground/src/download/template/index.html (100%) rename {packages => packages-private}/sfc-playground/src/download/template/main.js (100%) rename {packages => packages-private}/sfc-playground/src/download/template/package.json (100%) rename {packages => packages-private}/sfc-playground/src/download/template/vite.config.js (100%) rename {packages => packages-private}/sfc-playground/src/icons/Copy.vue (100%) rename {packages => packages-private}/sfc-playground/src/icons/Download.vue (100%) rename {packages => packages-private}/sfc-playground/src/icons/GitHub.vue (100%) rename {packages => packages-private}/sfc-playground/src/icons/Moon.vue (100%) rename {packages => packages-private}/sfc-playground/src/icons/Reload.vue (100%) rename {packages => packages-private}/sfc-playground/src/icons/Share.vue (100%) rename {packages => packages-private}/sfc-playground/src/icons/Sun.vue (100%) rename {packages => packages-private}/sfc-playground/src/main.ts (100%) rename {packages => packages-private}/sfc-playground/src/vue-dev-proxy-prod.ts (100%) rename {packages => packages-private}/sfc-playground/src/vue-dev-proxy.ts (100%) rename {packages => packages-private}/sfc-playground/src/vue-server-renderer-dev-proxy.ts (100%) rename {packages => packages-private}/sfc-playground/vercel.json (100%) rename {packages => packages-private}/sfc-playground/vite.config.ts (77%) rename {packages => packages-private}/template-explorer/README.md (100%) rename {packages => packages-private}/template-explorer/_redirects (100%) rename {packages => packages-private}/template-explorer/index.html (100%) rename {packages => packages-private}/template-explorer/local.html (100%) rename {packages => packages-private}/template-explorer/package.json (100%) rename {packages => packages-private}/template-explorer/src/index.ts (100%) rename {packages => packages-private}/template-explorer/src/options.ts (100%) rename {packages => packages-private}/template-explorer/src/theme.ts (100%) rename {packages => packages-private}/template-explorer/style.css (100%) create mode 100644 packages-private/vite-debug/App.vue create mode 100644 packages-private/vite-debug/README.md create mode 100644 packages-private/vite-debug/index.html create mode 100644 packages-private/vite-debug/main.ts create mode 100644 packages-private/vite-debug/package.json create mode 100644 packages-private/vite-debug/tsconfig.json create mode 100644 packages-private/vite-debug/vite.config.ts diff --git a/.github/contributing.md b/.github/contributing.md index 6439f1239..2554582b8 100644 --- a/.github/contributing.md +++ b/.github/contributing.md @@ -236,7 +236,7 @@ Tests that test against source code are grouped under `nr test-unit`, while test ### `nr test-dts` -Runs `nr build-dts` first, then verify the type tests in `packages/dts-test` are working correctly against the actual built type declarations. +Runs `nr build-dts` first, then verify the type tests in `packages-private/dts-test` are working correctly against the actual built type declarations. ## Project Structure @@ -335,7 +335,7 @@ Test coverage is continuously deployed at https://coverage.vuejs.org. PRs that i ### Testing Type Definition Correctness -Type tests are located in the `packages/dts-test` directory. To run the dts tests, run `nr test-dts`. Note that the type test requires all relevant `*.d.ts` files to be built first (and the script does it for you). Once the `d.ts` files are built and up-to-date, the tests can be re-run by running `nr test-dts-only`. +Type tests are located in the `packages-private/dts-test` directory. To run the dts tests, run `nr test-dts`. Note that the type test requires all relevant `*.d.ts` files to be built first (and the script does it for you). Once the `d.ts` files are built and up-to-date, the tests can be re-run by running `nr test-dts-only`. ## Financial Contribution diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 9c0458702..f13e5dd97 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -17,8 +17,8 @@ { groupName: 'playground', matchFileNames: [ - 'packages/sfc-playground/package.json', - 'packages/template-explorer/package.json', + 'packages-private/sfc-playground/package.json', + 'packages-private/template-explorer/package.json', ], }, { diff --git a/eslint.config.js b/eslint.config.js index 334787fd9..2e752e191 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -76,7 +76,11 @@ export default tseslint.config( // tests, no restrictions (runs in Node / Vitest with jsdom) { - files: ['**/__tests__/**', 'packages/dts-test/**'], + files: [ + '**/__tests__/**', + 'packages-private/dts-test/**', + 'packages-private/dts-build-test/**', + ], plugins: { vitest }, languageOptions: { globals: { @@ -119,7 +123,10 @@ export default tseslint.config( // Private package, browser only + no syntax restrictions { - files: ['packages/template-explorer/**', 'packages/sfc-playground/**'], + files: [ + 'packages-private/template-explorer/**', + 'packages-private/sfc-playground/**', + ], rules: { 'no-restricted-globals': ['error', ...NodeGlobals], 'no-restricted-syntax': ['error', banConstEnum], diff --git a/package.json b/package.json index 240dad49a..d9ab4b983 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test-unit": "vitest -c vitest.unit.config.ts", "test-e2e": "node scripts/build.js vue -f global -d && vitest -c vitest.e2e.config.ts", "test-dts": "run-s build-dts test-dts-only", - "test-dts-only": "tsc -p packages/dts-built-test/tsconfig.json && tsc -p ./packages/dts-test/tsconfig.test.json", + "test-dts-only": "tsc -p packages-private/dts-built-test/tsconfig.json && tsc -p ./packages-private/dts-test/tsconfig.test.json", "test-coverage": "vitest -c vitest.unit.config.ts --coverage", "test-bench": "vitest bench", "release": "node scripts/release.js", @@ -29,7 +29,7 @@ "dev-compiler": "run-p \"dev template-explorer\" serve", "dev-sfc": "run-s dev-sfc-prepare dev-sfc-run", "dev-sfc-prepare": "node scripts/pre-dev-sfc.js || npm run build-all-cjs", - "dev-sfc-serve": "vite packages/sfc-playground --host", + "dev-sfc-serve": "vite packages-private/sfc-playground --host", "dev-sfc-run": "run-p \"dev compiler-sfc -f esm-browser\" \"dev vue -if esm-bundler-runtime\" \"dev vue -ipf esm-browser-runtime\" \"dev server-renderer -if esm-bundler\" dev-sfc-serve", "serve": "serve", "open": "open http://localhost:3000/packages/template-explorer/local.html", @@ -38,7 +38,7 @@ "build-runtime-esm": "node scripts/build.js runtime reactivity shared -af esm-bundler && node scripts/build.js vue -f esm-bundler-runtime && node scripts/build.js vue -f esm-browser-runtime", "build-browser-esm": "node scripts/build.js runtime reactivity shared -af esm-bundler && node scripts/build.js vue -f esm-bundler && node scripts/build.js vue -f esm-browser", "build-ssr-esm": "node scripts/build.js compiler-sfc server-renderer -f esm-browser", - "build-sfc-playground-self": "cd packages/sfc-playground && npm run build", + "build-sfc-playground-self": "cd packages-private/sfc-playground && npm run build", "preinstall": "npx only-allow pnpm", "postinstall": "simple-git-hooks" }, diff --git a/packages/dts-built-test/README.md b/packages-private/dts-built-test/README.md similarity index 65% rename from packages/dts-built-test/README.md rename to packages-private/dts-built-test/README.md index 8191d66e3..5c14f2190 100644 --- a/packages/dts-built-test/README.md +++ b/packages-private/dts-built-test/README.md @@ -2,4 +2,4 @@ This package is private and for testing only. It is used to verify edge cases for external libraries that build their types using Vue core types - e.g. Vuetify as in [#8376](https://github.com/vuejs/core/issues/8376). -When running the `build-dts` task, this package's types are built alongside other packages. Then, during `test-dts-only` it is imported and used in [`packages/dts-test/built.test-d.ts`](https://github.com/vuejs/core/blob/main/packages/dts-test/built.test-d.ts) to verify that the built types work correctly. +When running the `build-dts` task, this package's types are built alongside other packages. Then, during `test-dts-only` it is imported and used in [`packages-private/dts-test/built.test-d.ts`](https://github.com/vuejs/core/blob/main/packages-private/dts-test/built.test-d.ts) to verify that the built types work correctly. diff --git a/packages/dts-built-test/package.json b/packages-private/dts-built-test/package.json similarity index 85% rename from packages/dts-built-test/package.json rename to packages-private/dts-built-test/package.json index dd81cab68..ffcaa4a67 100644 --- a/packages/dts-built-test/package.json +++ b/packages-private/dts-built-test/package.json @@ -1,5 +1,5 @@ { - "name": "@vue/dts-built-test", + "name": "dts-built-test", "private": true, "version": "0.0.0", "types": "dist/index.d.ts", diff --git a/packages/dts-built-test/src/index.ts b/packages-private/dts-built-test/src/index.ts similarity index 100% rename from packages/dts-built-test/src/index.ts rename to packages-private/dts-built-test/src/index.ts diff --git a/packages/dts-built-test/tsconfig.json b/packages-private/dts-built-test/tsconfig.json similarity index 100% rename from packages/dts-built-test/tsconfig.json rename to packages-private/dts-built-test/tsconfig.json diff --git a/packages/dts-test/README.md b/packages-private/dts-test/README.md similarity index 52% rename from packages/dts-test/README.md rename to packages-private/dts-test/README.md index f75cc8b8d..075fc3431 100644 --- a/packages/dts-test/README.md +++ b/packages-private/dts-test/README.md @@ -4,4 +4,4 @@ Tests TypeScript types to ensure the types remain as expected. - This directory is included in the root `tsconfig.json`, where package imports are aliased to `src` directories, so in IDEs and the `pnpm check` script the types are validated against source code. -- When running `tsc` with `packages/dts-test/tsconfig.test.json`, packages are resolved using normal `node` resolution, so the types are validated against actual **built** types. This requires the types to be built first via `pnpm build-dts`. +- When running `tsc` with `packages-private/dts-test/tsconfig.test.json`, packages are resolved using normal `node` resolution, so the types are validated against actual **built** types. This requires the types to be built first via `pnpm build-dts`. diff --git a/packages/dts-test/appDirective.test-d.ts b/packages-private/dts-test/appDirective.test-d.ts similarity index 100% rename from packages/dts-test/appDirective.test-d.ts rename to packages-private/dts-test/appDirective.test-d.ts diff --git a/packages/dts-test/appUse.test-d.ts b/packages-private/dts-test/appUse.test-d.ts similarity index 100% rename from packages/dts-test/appUse.test-d.ts rename to packages-private/dts-test/appUse.test-d.ts diff --git a/packages/dts-test/built.test-d.ts b/packages-private/dts-test/built.test-d.ts similarity index 82% rename from packages/dts-test/built.test-d.ts rename to packages-private/dts-test/built.test-d.ts index ebff2955c..c2b4fb6d8 100644 --- a/packages/dts-test/built.test-d.ts +++ b/packages-private/dts-test/built.test-d.ts @@ -1,4 +1,4 @@ -import { CustomPropsNotErased } from '@vue/dts-built-test' +import { CustomPropsNotErased } from 'dts-built-test/src/index' import { describe, expectType } from './utils' declare module 'vue' { diff --git a/packages/dts-test/compiler.test-d.ts b/packages-private/dts-test/compiler.test-d.ts similarity index 100% rename from packages/dts-test/compiler.test-d.ts rename to packages-private/dts-test/compiler.test-d.ts diff --git a/packages/dts-test/component.test-d.ts b/packages-private/dts-test/component.test-d.ts similarity index 100% rename from packages/dts-test/component.test-d.ts rename to packages-private/dts-test/component.test-d.ts diff --git a/packages/dts-test/componentInstance.test-d.tsx b/packages-private/dts-test/componentInstance.test-d.tsx similarity index 100% rename from packages/dts-test/componentInstance.test-d.tsx rename to packages-private/dts-test/componentInstance.test-d.tsx diff --git a/packages/dts-test/componentTypeExtensions.test-d.tsx b/packages-private/dts-test/componentTypeExtensions.test-d.tsx similarity index 100% rename from packages/dts-test/componentTypeExtensions.test-d.tsx rename to packages-private/dts-test/componentTypeExtensions.test-d.tsx diff --git a/packages/dts-test/defineComponent.test-d.tsx b/packages-private/dts-test/defineComponent.test-d.tsx similarity index 100% rename from packages/dts-test/defineComponent.test-d.tsx rename to packages-private/dts-test/defineComponent.test-d.tsx diff --git a/packages/dts-test/defineCustomElement.test-d.ts b/packages-private/dts-test/defineCustomElement.test-d.ts similarity index 100% rename from packages/dts-test/defineCustomElement.test-d.ts rename to packages-private/dts-test/defineCustomElement.test-d.ts diff --git a/packages/dts-test/directives.test-d.ts b/packages-private/dts-test/directives.test-d.ts similarity index 100% rename from packages/dts-test/directives.test-d.ts rename to packages-private/dts-test/directives.test-d.ts diff --git a/packages/dts-test/extractProps.test-d.ts b/packages-private/dts-test/extractProps.test-d.ts similarity index 100% rename from packages/dts-test/extractProps.test-d.ts rename to packages-private/dts-test/extractProps.test-d.ts diff --git a/packages/dts-test/functionalComponent.test-d.tsx b/packages-private/dts-test/functionalComponent.test-d.tsx similarity index 100% rename from packages/dts-test/functionalComponent.test-d.tsx rename to packages-private/dts-test/functionalComponent.test-d.tsx diff --git a/packages/dts-test/h.test-d.ts b/packages-private/dts-test/h.test-d.ts similarity index 100% rename from packages/dts-test/h.test-d.ts rename to packages-private/dts-test/h.test-d.ts diff --git a/packages/dts-test/inject.test-d.ts b/packages-private/dts-test/inject.test-d.ts similarity index 100% rename from packages/dts-test/inject.test-d.ts rename to packages-private/dts-test/inject.test-d.ts diff --git a/packages/dts-test/package.json b/packages-private/dts-test/package.json similarity index 74% rename from packages/dts-test/package.json rename to packages-private/dts-test/package.json index a6ea96bfa..72b1b6ea6 100644 --- a/packages/dts-test/package.json +++ b/packages-private/dts-test/package.json @@ -4,6 +4,6 @@ "version": "0.0.0", "dependencies": { "vue": "workspace:*", - "@vue/dts-built-test": "workspace:*" + "dts-built-test": "workspace:*" } } diff --git a/packages/dts-test/reactivity.test-d.ts b/packages-private/dts-test/reactivity.test-d.ts similarity index 100% rename from packages/dts-test/reactivity.test-d.ts rename to packages-private/dts-test/reactivity.test-d.ts diff --git a/packages/dts-test/ref.test-d.ts b/packages-private/dts-test/ref.test-d.ts similarity index 100% rename from packages/dts-test/ref.test-d.ts rename to packages-private/dts-test/ref.test-d.ts diff --git a/packages/dts-test/setupHelpers.test-d.ts b/packages-private/dts-test/setupHelpers.test-d.ts similarity index 100% rename from packages/dts-test/setupHelpers.test-d.ts rename to packages-private/dts-test/setupHelpers.test-d.ts diff --git a/packages/dts-test/tsconfig.test.json b/packages-private/dts-test/tsconfig.test.json similarity index 100% rename from packages/dts-test/tsconfig.test.json rename to packages-private/dts-test/tsconfig.test.json diff --git a/packages/dts-test/tsx.test-d.tsx b/packages-private/dts-test/tsx.test-d.tsx similarity index 100% rename from packages/dts-test/tsx.test-d.tsx rename to packages-private/dts-test/tsx.test-d.tsx diff --git a/packages/dts-test/utils.d.ts b/packages-private/dts-test/utils.d.ts similarity index 100% rename from packages/dts-test/utils.d.ts rename to packages-private/dts-test/utils.d.ts diff --git a/packages/dts-test/watch.test-d.ts b/packages-private/dts-test/watch.test-d.ts similarity index 100% rename from packages/dts-test/watch.test-d.ts rename to packages-private/dts-test/watch.test-d.ts diff --git a/packages/sfc-playground/README.md b/packages-private/sfc-playground/README.md similarity index 100% rename from packages/sfc-playground/README.md rename to packages-private/sfc-playground/README.md diff --git a/packages/sfc-playground/index.html b/packages-private/sfc-playground/index.html similarity index 100% rename from packages/sfc-playground/index.html rename to packages-private/sfc-playground/index.html diff --git a/packages/sfc-playground/package.json b/packages-private/sfc-playground/package.json similarity index 90% rename from packages/sfc-playground/package.json rename to packages-private/sfc-playground/package.json index 9d38811c7..b43247e9c 100644 --- a/packages/sfc-playground/package.json +++ b/packages-private/sfc-playground/package.json @@ -9,7 +9,7 @@ "serve": "vite preview" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.1.2", + "@vitejs/plugin-vue": "catalog:", "vite": "catalog:" }, "dependencies": { diff --git a/packages/sfc-playground/public/logo.svg b/packages-private/sfc-playground/public/logo.svg similarity index 100% rename from packages/sfc-playground/public/logo.svg rename to packages-private/sfc-playground/public/logo.svg diff --git a/packages/sfc-playground/src/App.vue b/packages-private/sfc-playground/src/App.vue similarity index 100% rename from packages/sfc-playground/src/App.vue rename to packages-private/sfc-playground/src/App.vue diff --git a/packages/sfc-playground/src/Header.vue b/packages-private/sfc-playground/src/Header.vue similarity index 98% rename from packages/sfc-playground/src/Header.vue rename to packages-private/sfc-playground/src/Header.vue index 8e810d894..922a2b111 100644 --- a/packages/sfc-playground/src/Header.vue +++ b/packages-private/sfc-playground/src/Header.vue @@ -125,7 +125,7 @@ function toggleDark() { { - const filePath = path.resolve(__dirname, file) + const filePath = path.resolve(__dirname, '../../packages', file) const basename = path.basename(file) if (!fs.existsSync(filePath)) { throw new Error( @@ -49,11 +49,11 @@ function copyVuePlugin(): Plugin { }) } - copyFile(`../vue/dist/vue.esm-browser.js`) - copyFile(`../vue/dist/vue.esm-browser.prod.js`) - copyFile(`../vue/dist/vue.runtime.esm-browser.js`) - copyFile(`../vue/dist/vue.runtime.esm-browser.prod.js`) - copyFile(`../server-renderer/dist/server-renderer.esm-browser.js`) + copyFile(`vue/dist/vue.esm-browser.js`) + copyFile(`vue/dist/vue.esm-browser.prod.js`) + copyFile(`vue/dist/vue.runtime.esm-browser.js`) + copyFile(`vue/dist/vue.runtime.esm-browser.prod.js`) + copyFile(`server-renderer/dist/server-renderer.esm-browser.js`) }, } } diff --git a/packages/template-explorer/README.md b/packages-private/template-explorer/README.md similarity index 100% rename from packages/template-explorer/README.md rename to packages-private/template-explorer/README.md diff --git a/packages/template-explorer/_redirects b/packages-private/template-explorer/_redirects similarity index 100% rename from packages/template-explorer/_redirects rename to packages-private/template-explorer/_redirects diff --git a/packages/template-explorer/index.html b/packages-private/template-explorer/index.html similarity index 100% rename from packages/template-explorer/index.html rename to packages-private/template-explorer/index.html diff --git a/packages/template-explorer/local.html b/packages-private/template-explorer/local.html similarity index 100% rename from packages/template-explorer/local.html rename to packages-private/template-explorer/local.html diff --git a/packages/template-explorer/package.json b/packages-private/template-explorer/package.json similarity index 100% rename from packages/template-explorer/package.json rename to packages-private/template-explorer/package.json diff --git a/packages/template-explorer/src/index.ts b/packages-private/template-explorer/src/index.ts similarity index 100% rename from packages/template-explorer/src/index.ts rename to packages-private/template-explorer/src/index.ts diff --git a/packages/template-explorer/src/options.ts b/packages-private/template-explorer/src/options.ts similarity index 100% rename from packages/template-explorer/src/options.ts rename to packages-private/template-explorer/src/options.ts diff --git a/packages/template-explorer/src/theme.ts b/packages-private/template-explorer/src/theme.ts similarity index 100% rename from packages/template-explorer/src/theme.ts rename to packages-private/template-explorer/src/theme.ts diff --git a/packages/template-explorer/style.css b/packages-private/template-explorer/style.css similarity index 100% rename from packages/template-explorer/style.css rename to packages-private/template-explorer/style.css diff --git a/packages-private/vite-debug/App.vue b/packages-private/vite-debug/App.vue new file mode 100644 index 000000000..95b3be8ee --- /dev/null +++ b/packages-private/vite-debug/App.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/packages-private/vite-debug/README.md b/packages-private/vite-debug/README.md new file mode 100644 index 000000000..4f035ae6f --- /dev/null +++ b/packages-private/vite-debug/README.md @@ -0,0 +1 @@ +This package is used for debugging issues that are related to `@vitejs/plugin-vue`, or can only be reproduced in a Vite-based setup. It aims to be as close to production as possible so Vue packages are resolved to the dist files instead of source. diff --git a/packages-private/vite-debug/index.html b/packages-private/vite-debug/index.html new file mode 100644 index 000000000..79052a023 --- /dev/null +++ b/packages-private/vite-debug/index.html @@ -0,0 +1,2 @@ + +
diff --git a/packages-private/vite-debug/main.ts b/packages-private/vite-debug/main.ts new file mode 100644 index 000000000..52668a0a5 --- /dev/null +++ b/packages-private/vite-debug/main.ts @@ -0,0 +1,6 @@ +import { createApp } from 'vue' +import App from './App.vue' + +const app = createApp(App) + +app.mount('#app') diff --git a/packages-private/vite-debug/package.json b/packages-private/vite-debug/package.json new file mode 100644 index 000000000..b0f2bad2b --- /dev/null +++ b/packages-private/vite-debug/package.json @@ -0,0 +1,15 @@ +{ + "name": "vite-debug", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "serve": "vite preview" + }, + "devDependencies": { + "@vitejs/plugin-vue": "catalog:", + "vite": "catalog:", + "vue": "workspace:*" + } +} diff --git a/packages-private/vite-debug/tsconfig.json b/packages-private/vite-debug/tsconfig.json new file mode 100644 index 000000000..ceecb1cde --- /dev/null +++ b/packages-private/vite-debug/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "module": "esnext", + "moduleResolution": "bundler" + }, + "include": ["./*"] +} diff --git a/packages-private/vite-debug/vite.config.ts b/packages-private/vite-debug/vite.config.ts new file mode 100644 index 000000000..c40aa3c36 --- /dev/null +++ b/packages-private/vite-debug/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +export default defineConfig({ + plugins: [vue()], +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 75497dd7f..496c3fb87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,6 +12,9 @@ catalogs: '@babel/types': specifier: ^7.25.2 version: 7.25.2 + '@vitejs/plugin-vue': + specifier: ^5.1.2 + version: 5.1.2 estree-walker: specifier: ^2.0.2 version: 2.0.2 @@ -180,6 +183,70 @@ importers: specifier: ^2.0.0 version: 2.0.5(@types/node@20.14.14)(jsdom@24.1.1)(sass@1.77.8) + packages-private/dts-built-test: + dependencies: + '@vue/reactivity': + specifier: workspace:* + version: link:../../packages/reactivity + '@vue/shared': + specifier: workspace:* + version: link:../../packages/shared + vue: + specifier: workspace:* + version: link:../../packages/vue + + packages-private/dts-test: + dependencies: + dts-built-test: + specifier: workspace:* + version: link:../dts-built-test + vue: + specifier: workspace:* + version: link:../../packages/vue + + packages-private/sfc-playground: + dependencies: + '@vue/repl': + specifier: ^4.3.1 + version: 4.3.1 + file-saver: + specifier: ^2.0.5 + version: 2.0.5 + jszip: + specifier: ^3.10.1 + version: 3.10.1 + vue: + specifier: workspace:* + version: link:../../packages/vue + devDependencies: + '@vitejs/plugin-vue': + specifier: 'catalog:' + version: 5.1.2(vite@5.4.0(@types/node@20.14.14)(sass@1.77.8))(vue@packages+vue) + vite: + specifier: 'catalog:' + version: 5.4.0(@types/node@20.14.14)(sass@1.77.8) + + packages-private/template-explorer: + dependencies: + monaco-editor: + specifier: ^0.50.0 + version: 0.50.0 + source-map-js: + specifier: ^1.2.0 + version: 1.2.0 + + packages-private/vite-debug: + devDependencies: + '@vitejs/plugin-vue': + specifier: 'catalog:' + version: 5.1.2(vite@5.4.0(@types/node@20.14.14)(sass@1.77.8))(vue@packages+vue) + vite: + specifier: 'catalog:' + version: 5.4.0(@types/node@20.14.14)(sass@1.77.8) + vue: + specifier: workspace:* + version: link:../../packages/vue + packages/compiler-core: dependencies: '@babel/parser': @@ -281,27 +348,6 @@ importers: specifier: workspace:* version: link:../shared - packages/dts-built-test: - dependencies: - '@vue/reactivity': - specifier: workspace:* - version: link:../reactivity - '@vue/shared': - specifier: workspace:* - version: link:../shared - vue: - specifier: workspace:* - version: link:../vue - - packages/dts-test: - dependencies: - '@vue/dts-built-test': - specifier: workspace:* - version: link:../dts-built-test - vue: - specifier: workspace:* - version: link:../vue - packages/reactivity: dependencies: '@vue/shared': @@ -357,39 +403,8 @@ importers: specifier: workspace:* version: link:../vue - packages/sfc-playground: - dependencies: - '@vue/repl': - specifier: ^4.3.1 - version: 4.3.1 - file-saver: - specifier: ^2.0.5 - version: 2.0.5 - jszip: - specifier: ^3.10.1 - version: 3.10.1 - vue: - specifier: workspace:* - version: link:../vue - devDependencies: - '@vitejs/plugin-vue': - specifier: ^5.1.2 - version: 5.1.2(vite@5.4.0(@types/node@20.14.14)(sass@1.77.8))(vue@packages+vue) - vite: - specifier: 'catalog:' - version: 5.4.0(@types/node@20.14.14)(sass@1.77.8) - packages/shared: {} - packages/template-explorer: - dependencies: - monaco-editor: - specifier: ^0.50.0 - version: 0.50.0 - source-map-js: - specifier: ^1.2.0 - version: 1.2.0 - packages/vue: dependencies: '@vue/compiler-dom': diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index facb791e6..23270954b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,6 @@ packages: - 'packages/*' + - 'packages-private/*' catalog: '@babel/parser': ^7.25.3 @@ -8,3 +9,4 @@ catalog: 'magic-string': ^0.30.11 'source-map-js': ^1.2.0 'vite': ^5.4.0 + '@vitejs/plugin-vue': ^5.1.2 diff --git a/rollup.config.js b/rollup.config.js index 8e97d74c5..79883d1dd 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,6 +2,7 @@ import assert from 'node:assert/strict' import { createRequire } from 'node:module' import { fileURLToPath } from 'node:url' +import fs from 'node:fs' import path from 'node:path' import replace from '@rollup/plugin-replace' import json from '@rollup/plugin-json' @@ -33,7 +34,11 @@ const __dirname = fileURLToPath(new URL('.', import.meta.url)) const masterVersion = require('./package.json').version const consolidatePkg = require('@vue/consolidate/package.json') -const packagesDir = path.resolve(__dirname, 'packages') +const privatePackages = fs.readdirSync('packages-private') +const pkgBase = privatePackages.includes(process.env.TARGET) + ? `packages-private` + : `packages` +const packagesDir = path.resolve(__dirname, pkgBase) const packageDir = path.resolve(packagesDir, process.env.TARGET) const resolve = (/** @type {string} */ p) => path.resolve(packageDir, p) diff --git a/scripts/build.js b/scripts/build.js index ec111a038..4a0aef645 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -16,7 +16,7 @@ nr build core --formats cjs ``` */ -import fs from 'node:fs/promises' +import fs from 'node:fs' import { parseArgs } from 'node:util' import { existsSync, readFileSync } from 'node:fs' import path from 'node:path' @@ -84,7 +84,7 @@ const sizeDir = path.resolve('temp/size') run() async function run() { - if (writeSize) await fs.mkdir(sizeDir, { recursive: true }) + if (writeSize) fs.mkdirSync(sizeDir, { recursive: true }) const removeCache = scanEnums() try { const resolvedTargets = targets.length @@ -151,13 +151,18 @@ async function runParallel(maxConcurrency, source, iteratorFn) { return Promise.all(ret) } +const privatePackages = fs.readdirSync('packages-private') + /** * Builds the target. * @param {string} target - The target to build. * @returns {Promise} - A promise representing the build process. */ async function build(target) { - const pkgDir = path.resolve(`packages/${target}`) + const pkgBase = privatePackages.includes(target) + ? `packages-private` + : `packages` + const pkgDir = path.resolve(`${pkgBase}/${target}`) const pkg = JSON.parse(readFileSync(`${pkgDir}/package.json`, 'utf-8')) // if this is a full build (no specific targets), ignore private packages @@ -167,7 +172,7 @@ async function build(target) { // if building a specific format, do not remove dist. if (!formats && existsSync(`${pkgDir}/dist`)) { - await fs.rm(`${pkgDir}/dist`, { recursive: true }) + fs.rmSync(`${pkgDir}/dist`, { recursive: true }) } const env = @@ -232,7 +237,7 @@ async function checkFileSize(filePath) { if (!existsSync(filePath)) { return } - const file = await fs.readFile(filePath) + const file = fs.readFileSync(filePath) const fileName = path.basename(filePath) const gzipped = gzipSync(file) @@ -247,7 +252,7 @@ async function checkFileSize(filePath) { ) if (writeSize) - await fs.writeFile( + fs.writeFileSync( path.resolve(sizeDir, `${fileName}.json`), JSON.stringify({ file: fileName, diff --git a/scripts/utils.js b/scripts/utils.js index 056d95b7b..3c92bf7ba 100644 --- a/scripts/utils.js +++ b/scripts/utils.js @@ -6,19 +6,22 @@ import { spawn } from 'node:child_process' const require = createRequire(import.meta.url) -export const targets = fs.readdirSync('packages').filter(f => { - if ( - !fs.statSync(`packages/${f}`).isDirectory() || - !fs.existsSync(`packages/${f}/package.json`) - ) { - return false - } - const pkg = require(`../packages/${f}/package.json`) - if (pkg.private && !pkg.buildOptions) { - return false - } - return true -}) +export const targets = fs + .readdirSync('packages') + .filter(f => { + if ( + !fs.statSync(`packages/${f}`).isDirectory() || + !fs.existsSync(`packages/${f}/package.json`) + ) { + return false + } + const pkg = require(`../packages/${f}/package.json`) + if (pkg.private && !pkg.buildOptions) { + return false + } + return true + }) + .concat('template-explorer') /** * diff --git a/tsconfig.json b/tsconfig.json index 8ff1b2a31..a12850af0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,12 +32,13 @@ "include": [ "packages/global.d.ts", "packages/*/src", + "packages-private/*/src", "packages/runtime-dom/types/jsx.d.ts", "packages/*/__tests__", - "packages/dts-test", + "packages-private/dts-test", "packages/vue/jsx-runtime", "scripts/*", "rollup.*.js" ], - "exclude": ["packages/sfc-playground/src/vue-dev-proxy*"] + "exclude": ["packages-private/sfc-playground/src/vue-dev-proxy*"] } diff --git a/vitest.config.ts b/vitest.config.ts index 0b6c014f4..f661a003d 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -40,7 +40,7 @@ export default defineConfig({ 'packages/runtime-dom/src/components/Transition*', // mostly entries 'packages/vue-compat/**', - 'packages/sfc-playground/**', + 'packages-private/**', 'scripts/**', ], },