diff --git a/docs/config/index.md b/docs/config/index.md index 5cd1a23774400c..dc8bcac1ce221e 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -487,7 +487,7 @@ const { createServer: createViteServer } = require('vite') async function createServer() { const app = express() - // Create vite server in middleware mode. + // Create Vite server in middleware mode. const vite = await createViteServer({ server: { middlewareMode: 'ssr' } }) @@ -704,7 +704,7 @@ createServer() By default, Vite will crawl your index.html to detect dependencies that need to be pre-bundled. If build.rollupOptions.input is specified, Vite will crawl those entry points instead. - If neither of these fit your needs, you can specify custom entries using this option - the value should be a [fast-glob pattern](https://github.com/mrmlnc/fast-glob#basic-syntax) or array of patterns that are relative from vite project root. This will overwrite default entries inference. + If neither of these fit your needs, you can specify custom entries using this option - the value should be a [fast-glob pattern](https://github.com/mrmlnc/fast-glob#basic-syntax) or array of patterns that are relative from Vite project root. This will overwrite default entries inference. ### optimizeDeps.exclude diff --git a/docs/guide/api-javascript.md b/docs/guide/api-javascript.md index e93d5ca5bd8f97..88186f49f6fdb3 100644 --- a/docs/guide/api-javascript.md +++ b/docs/guide/api-javascript.md @@ -40,7 +40,7 @@ The `InlineConfig` interface extends `UserConfig` with additional properties: ```ts interface ViteDevServer { /** - * The resolved vite config object. + * The resolved Vite config object. */ config: ResolvedConfig /** @@ -84,7 +84,7 @@ interface ViteDevServer { options?: TransformOptions ): Promise /** - * Apply vite built-in HTML transforms and any plugin HTML transforms. + * Apply Vite built-in HTML transforms and any plugin HTML transforms. */ transformIndexHtml(url: string, html: string): Promise /** diff --git a/docs/guide/build.md b/docs/guide/build.md index ffc02c50d4baca..aac86a237b6819 100644 --- a/docs/guide/build.md +++ b/docs/guide/build.md @@ -4,7 +4,7 @@ When it is time to deploy your app for production, simply run the `vite build` c ## Browser Compatibility -The production bundle assumes support for modern JavaScript. By default, vite targets browsers which support the [native ESM script tag](https://caniuse.com/es6-module) and [native ESM dynamic import](https://caniuse.com/es6-module-dynamic-import). As a reference, vite uses this [browserslist](https://github.com/browserslist/browserslist) query: +The production bundle assumes support for modern JavaScript. By default, Vite targets browsers which support the [native ESM script tag](https://caniuse.com/es6-module) and [native ESM dynamic import](https://caniuse.com/es6-module-dynamic-import). As a reference, Vite uses this [browserslist](https://github.com/browserslist/browserslist) query: ``` defaults and supports es6-module and supports es6-module-dynamic-import, not opera > 0, not samsung > 0, not and_qq > 0 diff --git a/docs/guide/env-and-mode.md b/docs/guide/env-and-mode.md index 32ee388c64ac87..eec5796165f5a3 100644 --- a/docs/guide/env-and-mode.md +++ b/docs/guide/env-and-mode.md @@ -44,7 +44,7 @@ VITE_SOME_KEY=123 Only `VITE_SOME_KEY` will be exposed as `import.meta.env.VITE_SOME_KEY` to your client source code, but `DB_PASSWORD` will not. -If you want to customize env variables prefix, see [envPrefix](/config/index#envPrefix) option. +If you want to customize env variables prefix, see [envPrefix](/config/index#envprefix) option. :::warning SECURITY NOTES diff --git a/docs/guide/index.md b/docs/guide/index.md index aad1e2aefcd57f..01b8582323f1cb 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -133,7 +133,7 @@ yarn build yarn link ``` -Then go to your vite based project and run `yarn link vite`. Now restart the development server (`yarn dev`) to ride on the bleeding edge! +Then go to your Vite based project and run `yarn link vite`. Now restart the development server (`yarn dev`) to ride on the bleeding edge! ## Community diff --git a/docs/guide/ssr.md b/docs/guide/ssr.md index 3d65723a6bfc58..97a7140c98490e 100644 --- a/docs/guide/ssr.md +++ b/docs/guide/ssr.md @@ -73,7 +73,7 @@ const { createServer: createViteServer } = require('vite') async function createServer() { const app = express() - // Create vite server in middleware mode. This disables Vite's own HTML + // Create Vite server in middleware mode. This disables Vite's own HTML // serving logic and let the parent server take control. // // If you want to use Vite's own HTML serving logic (using Vite as @@ -109,7 +109,7 @@ app.use('*', async (req, res) => { 'utf-8' ) - // 2. Apply vite HTML transforms. This injects the vite HMR client, and + // 2. Apply Vite HTML transforms. This injects the Vite HMR client, and // also applies HTML transforms from Vite plugins, e.g. global preambles // from @vitejs/plugin-react-refresh template = await vite.transformIndexHtml(url, template) @@ -130,7 +130,7 @@ app.use('*', async (req, res) => { // 6. Send the rendered HTML back. res.status(200).set({ 'Content-Type': 'text/html' }).end(html) } catch (e) { - // If an error is caught, let vite fix the stracktrace so it maps back to + // If an error is caught, let Vite fix the stracktrace so it maps back to // your actual source code. vite.ssrFixStacktrace(e) console.error(e) diff --git a/package.json b/package.json index f94aa5c3660a97..3ba1fcea247b7e 100644 --- a/package.json +++ b/package.json @@ -54,8 +54,8 @@ "sirv": "^1.0.17", "ts-jest": "^27.0.4", "ts-node": "^10.1.0", - "typescript": "^4.3.5", - "vitepress": "^0.17.0", + "typescript": "~4.3.5", + "vitepress": "^0.17.1", "yorkie": "^2.0.0" }, "peerDependencies": { diff --git a/packages/create-vite/CHANGELOG.md b/packages/create-vite/CHANGELOG.md index e087f7a588e0c2..49f4e85621c6b8 100644 --- a/packages/create-vite/CHANGELOG.md +++ b/packages/create-vite/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.6.2](https://github.com/vitejs/vite/compare/create-vite@2.6.1...create-vite@2.6.2) (2021-09-07) + + + ## [2.6.1](https://github.com/vitejs/vite/compare/create-vite@2.5.4...create-vite@2.6.1) (2021-08-31) diff --git a/packages/create-vite/package.json b/packages/create-vite/package.json index 631fe803a47601..d09fd9bb1dc008 100644 --- a/packages/create-vite/package.json +++ b/packages/create-vite/package.json @@ -1,6 +1,6 @@ { "name": "create-vite", - "version": "2.6.1", + "version": "2.6.2", "license": "MIT", "author": "Evan You", "bin": { diff --git a/packages/create-vite/template-lit-element-ts/package.json b/packages/create-vite/template-lit-element-ts/package.json index ebf5ad2b80f7a4..e40e8d68eb1be5 100644 --- a/packages/create-vite/template-lit-element-ts/package.json +++ b/packages/create-vite/template-lit-element-ts/package.json @@ -18,7 +18,7 @@ "lit-element": "^2.4.0" }, "devDependencies": { - "vite": "^2.5.2", + "vite": "^2.5.4", "typescript": "^4.3.2" } } diff --git a/packages/create-vite/template-lit-element/package.json b/packages/create-vite/template-lit-element/package.json index aa7685139e72ef..e2757fcc74fcdb 100644 --- a/packages/create-vite/template-lit-element/package.json +++ b/packages/create-vite/template-lit-element/package.json @@ -16,6 +16,6 @@ "lit-element": "^2.4.0" }, "devDependencies": { - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-preact-ts/package.json b/packages/create-vite/template-preact-ts/package.json index 09c5c3620b1311..da6fe59e00af0c 100644 --- a/packages/create-vite/template-preact-ts/package.json +++ b/packages/create-vite/template-preact-ts/package.json @@ -12,6 +12,6 @@ "devDependencies": { "@preact/preset-vite": "^2.0.0", "typescript": "^4.3.2", - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-preact/package.json b/packages/create-vite/template-preact/package.json index b176aac1434a87..c86e30eb0afa8d 100644 --- a/packages/create-vite/template-preact/package.json +++ b/packages/create-vite/template-preact/package.json @@ -11,6 +11,6 @@ }, "devDependencies": { "@preact/preset-vite": "^2.0.0", - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-react-ts/package.json b/packages/create-vite/template-react-ts/package.json index 8ea4c6ebdab0fc..48bed13858055f 100644 --- a/packages/create-vite/template-react-ts/package.json +++ b/packages/create-vite/template-react-ts/package.json @@ -15,6 +15,6 @@ "@types/react-dom": "^17.0.0", "@vitejs/plugin-react-refresh": "^1.3.1", "typescript": "^4.3.2", - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-react/package.json b/packages/create-vite/template-react/package.json index 7c2938ac2907bf..07d8caa7bb61cc 100644 --- a/packages/create-vite/template-react/package.json +++ b/packages/create-vite/template-react/package.json @@ -12,6 +12,6 @@ }, "devDependencies": { "@vitejs/plugin-react-refresh": "^1.3.1", - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-svelte-ts/package.json b/packages/create-vite/template-svelte-ts/package.json index 3c6b95b14b93e1..28772a94a9cb03 100644 --- a/packages/create-vite/template-svelte-ts/package.json +++ b/packages/create-vite/template-svelte-ts/package.json @@ -16,6 +16,6 @@ "svelte-preprocess": "^4.7.2", "tslib": "^2.2.0", "typescript": "^4.3.2", - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-svelte/package.json b/packages/create-vite/template-svelte/package.json index 87c63014fded20..164c237271131b 100644 --- a/packages/create-vite/template-svelte/package.json +++ b/packages/create-vite/template-svelte/package.json @@ -10,6 +10,6 @@ "devDependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.0-next.11", "svelte": "^3.37.0", - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-vanilla-ts/package.json b/packages/create-vite/template-vanilla-ts/package.json index e9582b8bfa3d5b..21e80c9cfaef10 100644 --- a/packages/create-vite/template-vanilla-ts/package.json +++ b/packages/create-vite/template-vanilla-ts/package.json @@ -8,6 +8,6 @@ }, "devDependencies": { "typescript": "^4.3.2", - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-vanilla/package.json b/packages/create-vite/template-vanilla/package.json index 6be584c1248ad1..d3a916d5705747 100644 --- a/packages/create-vite/template-vanilla/package.json +++ b/packages/create-vite/template-vanilla/package.json @@ -7,6 +7,6 @@ "serve": "vite preview" }, "devDependencies": { - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/create-vite/template-vue-ts/package.json b/packages/create-vite/template-vue-ts/package.json index 6a34e23cea2a47..04bcdc968f9731 100644 --- a/packages/create-vite/template-vue-ts/package.json +++ b/packages/create-vite/template-vue-ts/package.json @@ -10,10 +10,10 @@ "vue": "^3.2.6" }, "devDependencies": { - "@vitejs/plugin-vue": "^1.6.0", + "@vitejs/plugin-vue": "^1.6.1", "@vue/compiler-sfc": "^3.2.6", "typescript": "^4.3.2", - "vite": "^2.5.2", + "vite": "^2.5.4", "vue-tsc": "^0.2.2" } } diff --git a/packages/create-vite/template-vue/package.json b/packages/create-vite/template-vue/package.json index 1751cc4fa1816f..41dbbef6339fba 100644 --- a/packages/create-vite/template-vue/package.json +++ b/packages/create-vite/template-vue/package.json @@ -10,8 +10,8 @@ "vue": "^3.2.6" }, "devDependencies": { - "@vitejs/plugin-vue": "^1.6.0", + "@vitejs/plugin-vue": "^1.6.1", "@vue/compiler-sfc": "^3.2.6", - "vite": "^2.5.2" + "vite": "^2.5.4" } } diff --git a/packages/playground/legacy/__tests__/ssr/legacy-ssr.spec.ts b/packages/playground/legacy/__tests__/ssr/legacy-ssr.spec.ts new file mode 100644 index 00000000000000..dad9b94d83509e --- /dev/null +++ b/packages/playground/legacy/__tests__/ssr/legacy-ssr.spec.ts @@ -0,0 +1,20 @@ +import { isBuild } from '../../../testUtils' +import { port } from './serve' + +const url = `http://localhost:${port}` + +if (isBuild) { + test('should work', async () => { + await page.goto(url) + expect(await page.textContent('#app')).toMatch('Hello') + }) + + test('import.meta.env.LEGACY', async () => { + // SSR build is always modern + expect(await page.textContent('#env')).toMatch('false') + }) +} else { + // this test doesn't support serve mode + // must contain at least one test + test('should work', () => void 0) +} diff --git a/packages/playground/legacy/__tests__/ssr/serve.js b/packages/playground/legacy/__tests__/ssr/serve.js new file mode 100644 index 00000000000000..df43f180afb188 --- /dev/null +++ b/packages/playground/legacy/__tests__/ssr/serve.js @@ -0,0 +1,52 @@ +// @ts-check +// this is automtically detected by scripts/jestPerTestSetup.ts and will replace +// the default e2e test serve behavior +const path = require('path') + +const port = (exports.port = 9527) + +/** + * @param {string} root + * @param {boolean} _isProd + */ +exports.serve = async function serve(root, _isProd) { + const { build } = require('vite') + await build({ + root, + logLevel: 'silent', + build: { + target: 'esnext', + ssr: 'entry-server.js', + outDir: 'dist/server' + } + }) + + const express = require('express') + const app = express() + + app.use('/', async (_req, res) => { + const { render } = require(path.resolve( + root, + './dist/server/entry-server.js' + )) + const html = await render() + res.status(200).set({ 'Content-Type': 'text/html' }).end(html) + }) + + return new Promise((resolve, reject) => { + try { + const server = app.listen(port, () => { + resolve({ + // for test teardown + async close() { + await new Promise((resolve) => { + server.close(resolve) + }) + } + }) + }) + } catch (e) { + reject(e) + } + }) +} diff --git a/packages/playground/legacy/entry-server.js b/packages/playground/legacy/entry-server.js new file mode 100644 index 00000000000000..be475a54287bfc --- /dev/null +++ b/packages/playground/legacy/entry-server.js @@ -0,0 +1,7 @@ +// This counts as 'server-side' rendering, yes? +export async function render() { + return /* html */ ` +
Hello
+
${import.meta.env.LEGACY}
+ ` +} diff --git a/packages/playground/worker/__tests__/worker.spec.ts b/packages/playground/worker/__tests__/worker.spec.ts index eb5eb2a35f0c7b..93bc590cb90b4e 100644 --- a/packages/playground/worker/__tests__/worker.spec.ts +++ b/packages/playground/worker/__tests__/worker.spec.ts @@ -65,5 +65,6 @@ if (isBuild) { expect(content).toMatch(`new SharedWorker("/assets`) // inlined expect(content).toMatch(`(window.URL||window.webkitURL).createObjectURL`) + expect(content).toMatch(`window.Blob`) }) } diff --git a/packages/plugin-legacy/CHANGELOG.md b/packages/plugin-legacy/CHANGELOG.md index 4b806f45fd6b09..89f46b08b58b4e 100644 --- a/packages/plugin-legacy/CHANGELOG.md +++ b/packages/plugin-legacy/CHANGELOG.md @@ -1,3 +1,13 @@ +## [1.5.3](https://github.com/vitejs/vite/compare/plugin-legacy@1.5.2...plugin-legacy@1.5.3) (2021-09-07) + + +### Bug Fixes + +* **plugin-legacy:** fix regression introduced in [#4536](https://github.com/vitejs/vite/issues/4536) ([#4861](https://github.com/vitejs/vite/issues/4861)) ([fdc3212](https://github.com/vitejs/vite/commit/fdc3212474ff951e7e67810eca6cfb3ef1ed9ea2)) +* **plugin-legacy:** skip in SSR build ([#4536](https://github.com/vitejs/vite/issues/4536)) ([1f068fc](https://github.com/vitejs/vite/commit/1f068fcec38fc07c34e75a19821064386e460907)) + + + ## [1.5.2](https://github.com/vitejs/vite/compare/plugin-legacy@1.5.1...plugin-legacy@1.5.2) (2021-09-01) diff --git a/packages/plugin-legacy/index.js b/packages/plugin-legacy/index.js index 2e4a0efa80d863..735d20c2afa7db 100644 --- a/packages/plugin-legacy/index.js +++ b/packages/plugin-legacy/index.js @@ -451,12 +451,14 @@ function viteLegacyPlugin(options = {}) { const legacyEnvPlugin = { name: 'legacy-env', - config(_, env) { + config(config, env) { if (env) { return { define: { 'import.meta.env.LEGACY': - env.command === 'serve' ? false : legacyEnvVarMarker + env.command === 'serve' || config.build.ssr + ? false + : legacyEnvVarMarker } } } else { diff --git a/packages/plugin-legacy/package.json b/packages/plugin-legacy/package.json index 6aaaea7ca3401d..cafdee79726b4c 100644 --- a/packages/plugin-legacy/package.json +++ b/packages/plugin-legacy/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-legacy", - "version": "1.5.2", + "version": "1.5.3", "license": "MIT", "author": "Evan You", "files": [ diff --git a/packages/plugin-vue-jsx/CHANGELOG.md b/packages/plugin-vue-jsx/CHANGELOG.md index 0b2e10f0c4db7a..d76addc350c7ee 100644 --- a/packages/plugin-vue-jsx/CHANGELOG.md +++ b/packages/plugin-vue-jsx/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.1.8](https://github.com/vitejs/vite/compare/plugin-vue-jsx@1.1.7...plugin-vue-jsx@1.1.8) (2021-09-07) + + +### Bug Fixes + +* hmr doesn't work when modifying the code of jsx in sfc ([#4563](https://github.com/vitejs/vite/issues/4563)) ([1012367](https://github.com/vitejs/vite/commit/101236794c5d6d28591302d5552cb1c0ab8f4115)) + + + ## [1.1.7](https://github.com/vitejs/vite/compare/plugin-vue-jsx@1.1.6...plugin-vue-jsx@1.1.7) (2021-07-27) diff --git a/packages/plugin-vue-jsx/package.json b/packages/plugin-vue-jsx/package.json index c7aea0003ea017..81d7c2d2047a3e 100644 --- a/packages/plugin-vue-jsx/package.json +++ b/packages/plugin-vue-jsx/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-vue-jsx", - "version": "1.1.7", + "version": "1.1.8", "license": "MIT", "author": "Evan You", "files": [ diff --git a/packages/plugin-vue/CHANGELOG.md b/packages/plugin-vue/CHANGELOG.md index 7fe07fe1284cf1..72b1d3576066f8 100644 --- a/packages/plugin-vue/CHANGELOG.md +++ b/packages/plugin-vue/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.6.2](https://github.com/vitejs/vite/compare/plugin-vue@1.6.1...plugin-vue@1.6.2) (2021-09-08) + + +### Bug Fixes + +* **plugin-vue:** ensure descriptor in case main request is cached ([85612fe](https://github.com/vitejs/vite/commit/85612fe69da98759dbf3b5352cf47a74f20374ff)) + + + ## [1.6.1](https://github.com/vitejs/vite/compare/plugin-vue@1.6.0...plugin-vue@1.6.1) (2021-09-06) diff --git a/packages/plugin-vue/package.json b/packages/plugin-vue/package.json index 401f39c14c5bd8..5fb331170e1675 100644 --- a/packages/plugin-vue/package.json +++ b/packages/plugin-vue/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-vue", - "version": "1.6.1", + "version": "1.6.2", "license": "MIT", "author": "Evan You", "files": [ diff --git a/packages/plugin-vue/src/handleHotUpdate.ts b/packages/plugin-vue/src/handleHotUpdate.ts index 94d1fb4ee7830e..7676036929b49f 100644 --- a/packages/plugin-vue/src/handleHotUpdate.ts +++ b/packages/plugin-vue/src/handleHotUpdate.ts @@ -19,7 +19,7 @@ export async function handleHotUpdate({ read, server }: HmrContext): Promise { - const prevDescriptor = getDescriptor(file, false) + const prevDescriptor = getDescriptor(file, server.config.root, false, false) if (!prevDescriptor) { // file hasn't been requested yet (e.g. async component) return diff --git a/packages/plugin-vue/src/index.ts b/packages/plugin-vue/src/index.ts index 5ee0b396140e43..95fb8a7fc646d2 100644 --- a/packages/plugin-vue/src/index.ts +++ b/packages/plugin-vue/src/index.ts @@ -167,7 +167,11 @@ export default function vuePlugin(rawOptions: Options = {}): Plugin { if (query.src) { return fs.readFileSync(filename, 'utf-8') } - const descriptor = getDescriptor(filename)! + const descriptor = getDescriptor( + filename, + options.root, + options.isProduction + )! let block: SFCBlock | null | undefined if (query.type === 'script') { // handle +