diff --git a/docs/.vitepress/theme/composables/sponsor.ts b/docs/.vitepress/theme/composables/sponsor.ts index e7cad9d..44e53bd 100644 --- a/docs/.vitepress/theme/composables/sponsor.ts +++ b/docs/.vitepress/theme/composables/sponsor.ts @@ -48,33 +48,7 @@ const viteSponsors: Pick = { }, ], gold: [ - // through GitHub -> OpenCollective - { - name: 'Remix', - url: 'https://remix.run/', - img: '/remix.svg', - }, - { - name: 'Nx', - url: 'https://nx.dev/', - img: '/nx.svg', - }, - { - name: 'Transloadit', - url: 'https://transloadit.com/?utm_source=vite&utm_medium=referral&utm_campaign=sponsorship&utm_content=website', - img: '/transloadit.svg', - hasDark: true, - }, - { - name: 'Huly', - url: 'https://huly.io/', - img: '/huly.svg', - }, - { - name: 'Handsontable', - url: 'https://handsontable.com/docs/react-data-grid/?utm_source=vite_docs&utm_medium=sponsorship&utm_campaign=library_sponsorship_2024', - img: '/handsontable.svg', - }, + // now automated via sponsors.vuejs.org too ], } diff --git a/docs/config/build-options.md b/docs/config/build-options.md index 6b85357..df3d748 100644 --- a/docs/config/build-options.md +++ b/docs/config/build-options.md @@ -41,12 +41,13 @@ type ResolveModulePreloadDependenciesFn = ( url: string, deps: string[], context: { - importer: string + hostId: string + hostType: 'html' | 'js' }, ) => string[] ``` -Se llamará a la función `resolveDependencies` para cada importación dinámica con una lista de los fragmentos de los que depende, y también se llamará para cada fragmento importado en los archivos de entrada HTML. Se puede devolver un nuevo array de dependencias con estas dependencias filtradas, u otras más inyectadas, y sus rutas modificadas. Las rutas de `deps` son relativas a `build.outDir`. Se permite tambien retornar una ruta relativa al `hostId` para `hostType === 'js'`, en cuyo caso se usa `new URL(dep, import.meta.url)` para obtener una ruta absoluta al inyectar la precarga de este módulo en el encabezado HTML. +Se llamará a la función `resolveDependencies` para cada importación dinámica con una lista de los fragmentos de los que depende, y también se llamará para cada fragmento importado en los archivos de entrada HTML. Se puede devolver un nuevo array de dependencias con estas dependencias filtradas, u otras más inyectadas, y sus rutas modificadas. Las rutas de `deps` son relativas a `build.outDir`. El valor de retorno debe ser una ruta relativa a `build.outDir`. ```js twoslash /** @type {import('vite').UserConfig} */ diff --git a/docs/config/server-options.md b/docs/config/server-options.md index b23f3c3..9b14444 100644 --- a/docs/config/server-options.md +++ b/docs/config/server-options.md @@ -106,7 +106,7 @@ Consulta [el documento de WSL](https://learn.microsoft.com/en-us/windows/wsl/net changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), }, - // con RegEx + // con RegExp '^/fallback/.*': { target: 'http://jsonplaceholder.typicode.com', changeOrigin: true, @@ -321,6 +321,14 @@ createServer() Lista de bloqueo para archivos sensibles que están restringidos para ser servidos por el servidor de desarrollo de Vite. Esto tendrá mayor prioridad que [`server.fs.allow`](#server-fs-allow). Se admiten [patrones de picomatch](https://github.com/micromatch/picomatch#globbing-features). +## server.fs.cachedChecks + +- **Tipo:** `boolean` +- **Por defecto:** `false` +- **Experimental** + +Cachea los nombres de archivo de los directorios accedidos para evitar operaciones repetidas del sistema de archivos. Especialmente en Windows, esto podría resultar en una mejora de rendimiento. Está desactivado por defecto debido a casos límite al escribir un archivo en una carpeta en caché e importarlo inmediatamente. + ## server.origin - **Tipo:** `string` diff --git a/docs/config/shared-options.md b/docs/config/shared-options.md index 4294da3..213f2d9 100644 --- a/docs/config/shared-options.md +++ b/docs/config/shared-options.md @@ -217,7 +217,7 @@ Ten en cuenta que si se proporciona una configuración inline, Vite no buscará Especifica las opciones a pasar a los preprocesadores de CSS. Las extensiones de archivo se utilizan como claves para las opciones. Las opciones admitidas para cada preprocesador se pueden encontrar en su documentación respectiva: -- `sass`/`scss` - [Opciones](https://sass-lang.com/documentation/js-api/interfaces/LegacyStringOptions). +- `sass`/`scss` - la opción de nivel superior `api: "legacy" | "modern"` (por defecto `"legacy"`) permite cambiar qué API de Sass usar. [Opciones (legacy)](https://sass-lang.com/documentation/js-api/interfaces/LegacyStringOptions), [Opciones (modern)](https://sass-lang.com/documentation/js-api/interfaces/stringoptions/). - `less` - [Opciones](https://lesscss.org/usage/#less-options). - `styl`/`stylus`: solo se admite [`define`](https://stylus-lang.com/docs/js.html#define-name-node), el cual se puede pasar como un objeto. @@ -236,6 +236,12 @@ export default defineConfig({ }, }, }, + scss: { + api: 'modern', // o "legacy" + importers: [ + // ... + ], + }, }, }) ``` diff --git a/docs/guide/api-plugin.md b/docs/guide/api-plugin.md index b9bdf87..13d1a1e 100644 --- a/docs/guide/api-plugin.md +++ b/docs/guide/api-plugin.md @@ -423,12 +423,10 @@ Este hook no se invocará si estás utilizando un framework que tenga un manejo - Filtrar y reducir la lista de módulos afectados para que el HMR sea más preciso. - - Devuelva un array vacío y realiza una recarga completa: + - Devolver un array vacío y realizar una recarga completa: ```js handleHotUpdate({ server, modules, timestamp }) { - server.ws.send({ type: 'full-reload' }) - // Invalidar módulos manualmente const invalidatedModules = new Set() for (const mod of modules) { server.moduleGraph.invalidateModule( @@ -438,11 +436,12 @@ Este hook no se invocará si estás utilizando un framework que tenga un manejo true ) } + server.ws.send({ type: 'full-reload' }) return [] } ``` - - Devuelve un array vacío y realiza un manejo personalizado completo de HMR enviando eventos personalizados al cliente: + - Devolver un array vacío y realizar un manejo personalizado completo de HMR enviando eventos personalizados al cliente: ```js handleHotUpdate({ server }) { diff --git a/docs/package.json b/docs/package.json index d652da8..9cc486b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -8,10 +8,10 @@ "docs-serve": "vitepress serve" }, "devDependencies": { - "@shikijs/vitepress-twoslash": "^1.15.2", + "@shikijs/vitepress-twoslash": "^1.14.1", "@types/express": "^4.17.21", "feed": "^4.2.2", - "vitepress": "1.2.3", + "vitepress": "1.3.4", "vue": "^3.4.38" } } diff --git a/docs/public/handsontable.svg b/docs/public/handsontable.svg deleted file mode 100644 index 865447f..0000000 --- a/docs/public/handsontable.svg +++ /dev/null @@ -1 +0,0 @@ -Handsontable_logo_color \ No newline at end of file diff --git a/docs/public/huly.svg b/docs/public/huly.svg deleted file mode 100644 index 8a26314..0000000 --- a/docs/public/huly.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/public/nx.svg b/docs/public/nx.svg deleted file mode 100644 index b97dfb0..0000000 --- a/docs/public/nx.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/public/remix.svg b/docs/public/remix.svg deleted file mode 100644 index 59b3e56..0000000 --- a/docs/public/remix.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/public/transloadit-dark.svg b/docs/public/transloadit-dark.svg deleted file mode 100644 index f402f7a..0000000 --- a/docs/public/transloadit-dark.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - diff --git a/docs/public/transloadit.svg b/docs/public/transloadit.svg deleted file mode 100644 index 6033c48..0000000 --- a/docs/public/transloadit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/releases.md b/docs/releases.md index 4348fde..4f55fce 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -6,15 +6,27 @@ Existe un registro de cambios completo de versiones anteriores en [disponible en ## Ciclo de lanzamientos -Vite no tiene un ciclo de liberación fijo. +Vite no tiene un ciclo de lanzamientos fijo. -- Los lanzamientos de **parches** se publican según sea necesario. -- Las versiones **menores** siempre contienen nuevas funciones y también se publican según sea necesario. Los lanzamientos menores siempre pasan por una fase de prelanzamiento beta. -- Los lanzamientos **principales** generalmente se alinean con el [programa de finalización de soporte de Node.js](https://endoflife.date/nodejs) y se anunciarán con anticipación. Estos lanzamientos pasarán por una fase de discusión temprana y por fases previas al lanzamiento tanto alfa como beta. +- Los lanzamientos de **patch** se realizan según sea necesario (generalmente cada semana). +- Los lanzamientos **minor** siempre contienen nuevas características y se lanzan según sea necesario. Los lanzamientos minor siempre tienen una fase de pre-lanzamiento beta (generalmente cada dos meses). +- Los lanzamientos **major** generalmente se alinean con el [calendario EOL de Node.js](https://endoflife.date/nodejs) y se anunciarán con antelación. Estos lanzamientos pasarán por discusiones prolongadas con el ecosistema y tendrán fases de pre-lanzamiento alfa y beta (generalmente cada año). -La versión principal anterior de Vite seguirá recibiendo correcciones importantes y parches de seguridad. Después de eso, solo recibirá actualizaciones si hay problemas de seguridad. Recomendamos actualizar Vite regularmente. Consulta las [Guías de migración](https://es.vitejs.dev/guide/migration.html) cuando actualices a cada versión principal. +Los rangos de versiones de Vite que son soportados por el equipo de Vite se determinan automáticamente de la siguiente manera: -El equipo de Vite se asocia con los principales proyectos del ecosistema para probar nuevas versiones de Vite antes de su lanzamiento a través del [proyecto vite-ecosystem-ci](https://github.com/vitejs/vite-ecosystem-ci). La mayoría de los proyectos que usan Vite deberían poder ofrecer soporte rápidamente o migrar a nuevas versiones tan pronto como se publiquen. +- **Minor Actual** recibe correcciones regulares. +- **Major Anterior** (solo para su último minor) y **Minor Anterior** reciben correcciones importantes y parches de seguridad. +- **Penúltimo Major** (solo para su último minor) y **Penúltimo Minor** reciben parches de seguridad. +- Todas las versiones anteriores a estas ya no están soportadas. + +Como ejemplo, si la última versión de Vite es la 5.3.10: + +- Se lanzan parches regulares para `vite@5.3`. +- Las correcciones importantes y los parches de seguridad se transfieren a `vite@4` y `vite@5.2`. +- Los parches de seguridad también se transfieren a `vite@3` y `vite@5.1`. +- `vite@2` y `vite@5.0` ya no están soportados. Los usuarios deben actualizar para recibir actualizaciones. + +Recomendamos actualizar Vite regularmente. Consulta las [Guías de Migración](./guide/migration) cuando actualices a cada versión Major. El equipo de Vite trabaja estrechamente con los principales proyectos del ecosistema para garantizar la calidad de las nuevas versiones. Probamos nuevas versiones de Vite antes de lanzarlas a través del [proyecto vite-ecosystem-ci](https://github.com/vitejs/vite-ecosystem-ci). La mayoría de los proyectos que utilizan Vite deberían poder ofrecer soporte rápidamente o migrar a nuevas versiones tan pronto como se lancen. ## Casos especiales de versiones semánticas diff --git a/package.json b/package.json index 94dcbf2..af8b9e7 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "eslint --cache --fix" ] }, - "packageManager": "pnpm@9.6.0", + "packageManager": "pnpm@9.9.0", "pnpm": { "packageExtensions": { "acorn-walk": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 638a48b..d7c3e0c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -142,7 +142,7 @@ importers: docs: devDependencies: '@shikijs/vitepress-twoslash': - specifier: ^1.15.2 + specifier: ^1.14.1 version: 1.15.2(typescript@5.5.4) '@types/express': specifier: ^4.17.21 @@ -151,8 +151,8 @@ importers: specifier: ^4.2.2 version: 4.2.2 vitepress: - specifier: 1.2.3 - version: 1.2.3(@algolia/client-search@4.24.0)(@types/node@22.5.1)(postcss@8.4.41)(search-insights@2.14.0)(typescript@5.5.4) + specifier: 1.3.4 + version: 1.3.4(@algolia/client-search@4.24.0)(@types/node@22.5.1)(postcss@8.4.41)(search-insights@2.14.0)(typescript@5.5.4) vue: specifier: ^3.4.38 version: 3.4.38(typescript@5.5.4) @@ -1592,30 +1592,30 @@ packages: integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==, } - '@vueuse/core@10.11.1': + '@vueuse/core@11.0.3': resolution: { - integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==, + integrity: sha512-RENlh64+SYA9XMExmmH1a3TPqeIuJBNNB/63GT35MZI+zpru3oMRUA6cEFr9HmGqEgUisurwGwnIieF6qu3aXw==, } - '@vueuse/integrations@10.11.1': + '@vueuse/integrations@11.0.3': resolution: { - integrity: sha512-Y5hCGBguN+vuVYTZmdd/IMXLOdfS60zAmDmFYc4BKBcMUPZH1n4tdyDECCPjXm0bNT3ZRUy1xzTLGaUje8Xyaw==, + integrity: sha512-w6CDisaxs19S5Fd+NPPLFaA3GoX5gxuxrbTTBu0EYap7oH13w75L6C/+7e9mcoF9akhcR6GyYajwVMQEjdapJg==, } peerDependencies: async-validator: ^4 axios: ^1 - change-case: ^4 - drauu: ^0.3 + change-case: ^5 + drauu: ^0.4 focus-trap: ^7 - fuse.js: ^6 + fuse.js: ^7 idb-keyval: ^6 - jwt-decode: ^3 + jwt-decode: ^4 nprogress: ^0.2 qrcode: ^1.5 sortablejs: ^1 - universal-cookie: ^6 + universal-cookie: ^7 peerDependenciesMeta: async-validator: optional: true @@ -1642,16 +1642,16 @@ packages: universal-cookie: optional: true - '@vueuse/metadata@10.11.1': + '@vueuse/metadata@11.0.3': resolution: { - integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==, + integrity: sha512-+FtbO4SD5WpsOcQTcC0hAhNlOid6QNLzqedtquTtQ+CRNBoAt9GuV07c6KNHK1wCmlq8DFPwgiLF2rXwgSHX5Q==, } - '@vueuse/shared@10.11.1': + '@vueuse/shared@11.0.3': resolution: { - integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==, + integrity: sha512-0rY2m6HS5t27n/Vp5cTDsKTlNnimCqsbh/fmT2LgE+aaU42EMfXo8+bNX91W9I7DDmxfuACXMmrd7d79JxkqWA==, } JSONStream@1.3.5: @@ -3389,10 +3389,10 @@ packages: } engines: { node: '>=16 || 14 >=14.17' } - minisearch@6.3.0: + minisearch@7.1.0: resolution: { - integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==, + integrity: sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==, } mitt@3.0.1: @@ -4472,10 +4472,10 @@ packages: terser: optional: true - vitepress@1.2.3: + vitepress@1.3.4: resolution: { - integrity: sha512-GvEsrEeNLiDE1+fuwDAYJCYLNZDAna+EtnXlPajhv/MYeTjbNK6Bvyg6NoTdO1sbwuQJ0vuJR99bOlH53bo6lg==, + integrity: sha512-I1/F6OW1xl3kW4PaIMC6snxjWgf3qfziq2aqsDoFc/Gt41WbcRv++z8zjw8qGRIJ+I4bUW7ZcKFDHHN/jkH9DQ==, } hasBin: true peerDependencies: @@ -5495,20 +5495,20 @@ snapshots: '@vue/shared@3.4.38': {} - '@vueuse/core@10.11.1(vue@3.4.38(typescript@5.5.4))': + '@vueuse/core@11.0.3(vue@3.4.38(typescript@5.5.4))': dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.5.4)) + '@vueuse/metadata': 11.0.3 + '@vueuse/shared': 11.0.3(vue@3.4.38(typescript@5.5.4)) vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) transitivePeerDependencies: - '@vue/composition-api' - vue - '@vueuse/integrations@10.11.1(focus-trap@7.5.4)(vue@3.4.38(typescript@5.5.4))': + '@vueuse/integrations@11.0.3(focus-trap@7.5.4)(vue@3.4.38(typescript@5.5.4))': dependencies: - '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.5.4)) - '@vueuse/shared': 10.11.1(vue@3.4.38(typescript@5.5.4)) + '@vueuse/core': 11.0.3(vue@3.4.38(typescript@5.5.4)) + '@vueuse/shared': 11.0.3(vue@3.4.38(typescript@5.5.4)) vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) optionalDependencies: focus-trap: 7.5.4 @@ -5516,9 +5516,9 @@ snapshots: - '@vue/composition-api' - vue - '@vueuse/metadata@10.11.1': {} + '@vueuse/metadata@11.0.3': {} - '@vueuse/shared@10.11.1(vue@3.4.38(typescript@5.5.4))': + '@vueuse/shared@11.0.3(vue@3.4.38(typescript@5.5.4))': dependencies: vue-demi: 0.14.10(vue@3.4.38(typescript@5.5.4)) transitivePeerDependencies: @@ -6711,7 +6711,7 @@ snapshots: minipass@7.1.2: {} - minisearch@6.3.0: {} + minisearch@7.1.0: {} mitt@3.0.1: {} @@ -7293,7 +7293,7 @@ snapshots: '@types/node': 22.5.1 fsevents: 2.3.3 - vitepress@1.2.3(@algolia/client-search@4.24.0)(@types/node@22.5.1)(postcss@8.4.41)(search-insights@2.14.0)(typescript@5.5.4): + vitepress@1.3.4(@algolia/client-search@4.24.0)(@types/node@22.5.1)(postcss@8.4.41)(search-insights@2.14.0)(typescript@5.5.4): dependencies: '@docsearch/css': 3.6.1 '@docsearch/js': 3.6.1(@algolia/client-search@4.24.0)(search-insights@2.14.0) @@ -7303,11 +7303,11 @@ snapshots: '@vitejs/plugin-vue': 5.1.3(vite@5.4.2(@types/node@22.5.1))(vue@3.4.38(typescript@5.5.4)) '@vue/devtools-api': 7.3.9 '@vue/shared': 3.4.38 - '@vueuse/core': 10.11.1(vue@3.4.38(typescript@5.5.4)) - '@vueuse/integrations': 10.11.1(focus-trap@7.5.4)(vue@3.4.38(typescript@5.5.4)) + '@vueuse/core': 11.0.3(vue@3.4.38(typescript@5.5.4)) + '@vueuse/integrations': 11.0.3(focus-trap@7.5.4)(vue@3.4.38(typescript@5.5.4)) focus-trap: 7.5.4 mark.js: 8.11.1 - minisearch: 6.3.0 + minisearch: 7.1.0 shiki: 1.15.2 vite: 5.4.2(@types/node@22.5.1) vue: 3.4.38(typescript@5.5.4)