From 756a0b82526559bb837d443d9483f25f2ddc2d6e Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 7 Oct 2021 17:22:36 -0400 Subject: [PATCH 01/26] chore: lockfile for new playground package --- pnpm-lock.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27f51b80e6bded..7728fb32ca4f33 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -123,6 +123,9 @@ importers: packages/playground/cli: specifiers: {} + packages/playground/cli-module: + specifiers: {} + packages/playground/css: specifiers: css-dep: link:./css-dep From f94a720478c4905463ddf36f4c666431b2a438a9 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 7 Oct 2021 17:24:06 -0400 Subject: [PATCH 02/26] feat(internal): expose printHttpServerUrls --- packages/vite/src/node/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/index.ts b/packages/vite/src/node/index.ts index 9a64c1053174a1..6fb83f05174c31 100644 --- a/packages/vite/src/node/index.ts +++ b/packages/vite/src/node/index.ts @@ -4,7 +4,7 @@ export { preview } from './preview' export { build } from './build' export { optimizeDeps } from './optimizer' export { send } from './server/send' -export { createLogger } from './logger' +export { createLogger, printHttpServerUrls } from './logger' export { transformWithEsbuild } from './plugins/esbuild' export { resolvePackageData, resolvePackageEntry } from './plugins/resolve' export { normalizePath } from './utils' From 96a9ee4f3566e273db53ef9023222699520e4f8f Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 7 Oct 2021 17:31:58 -0400 Subject: [PATCH 03/26] feat(server): expose server.printUrls() --- packages/vite/src/node/cli.ts | 2 +- packages/vite/src/node/server/index.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/vite/src/node/cli.ts b/packages/vite/src/node/cli.ts index 877f4d7edd8598..c990cfa282d90b 100644 --- a/packages/vite/src/node/cli.ts +++ b/packages/vite/src/node/cli.ts @@ -108,7 +108,7 @@ cli } ) - printHttpServerUrls(server.httpServer, server.config) + server.printUrls() // @ts-ignore if (global.__vite_start_time) { diff --git a/packages/vite/src/node/server/index.ts b/packages/vite/src/node/server/index.ts index 812013d4a47462..8d692f5ec3e82a 100644 --- a/packages/vite/src/node/server/index.ts +++ b/packages/vite/src/node/server/index.ts @@ -55,6 +55,7 @@ import { createMissingImporterRegisterFn } from '../optimizer/registerMissing' import { resolveHostname } from '../utils' import { searchForWorkspaceRoot } from './searchRoot' import { CLIENT_DIR } from '../constants' +import { printHttpServerUrls } from '../logger' export { searchForWorkspaceRoot } from './searchRoot' @@ -270,6 +271,10 @@ export interface ViteDevServer { * Stop the server. */ close(): Promise + /** + * Print server urls + */ + printUrls(): void /** * @internal */ @@ -404,6 +409,13 @@ export async function createServer( closeHttpServer() ]) }, + printUrls() { + if (httpServer) { + printHttpServerUrls(httpServer, config) + } else { + throw new Error('cannot print server URLs in middleware mode.') + } + }, _optimizeDepsMetadata: null, _ssrExternals: null, _globImporters: Object.create(null), From 8a32cb6f08f56799758788a0318feb7f09f00053 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 7 Oct 2021 17:36:57 -0400 Subject: [PATCH 04/26] release: v2.6.5 --- packages/vite/CHANGELOG.md | 10 ++++++++++ packages/vite/package.json | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/vite/CHANGELOG.md b/packages/vite/CHANGELOG.md index 39e245bb9da9c8..2e8fcd3a8a5603 100644 --- a/packages/vite/CHANGELOG.md +++ b/packages/vite/CHANGELOG.md @@ -1,3 +1,13 @@ +## [2.6.5](https://github.com/vitejs/vite/compare/v2.6.4...v2.6.5) (2021-10-07) + + +### Features + +* **internal:** expose printHttpServerUrls ([f94a720](https://github.com/vitejs/vite/commit/f94a720478c4905463ddf36f4c666431b2a438a9)) +* **server:** expose server.printUrls() ([96a9ee4](https://github.com/vitejs/vite/commit/96a9ee4f3566e273db53ef9023222699520e4f8f)) + + + ## [2.6.4](https://github.com/vitejs/vite/compare/v2.6.3...v2.6.4) (2021-10-07) diff --git a/packages/vite/package.json b/packages/vite/package.json index e242fb8f515fb2..384d34c86ea663 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -1,6 +1,6 @@ { "name": "vite", - "version": "2.6.4", + "version": "2.6.5", "license": "MIT", "author": "Evan You", "description": "Native-ESM powered web dev build tool", From b58609829262255d73363229584a2341bc4f568d Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 7 Oct 2021 17:52:55 -0400 Subject: [PATCH 05/26] fix: avoid unnecessary pre-bundling warning --- packages/vite/src/node/optimizer/scan.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index 510981a4314853..ad6d19db3e7893 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -27,6 +27,7 @@ import { init, parse } from 'es-module-lexer' import MagicString from 'magic-string' import { transformImportGlob } from '../importGlob' import { performance } from 'perf_hooks' +import chalk from 'chalk' const debug = createDebugger('vite:deps') @@ -51,7 +52,7 @@ export async function scanImports(config: ResolvedConfig): Promise<{ let entries: string[] = [] - const explicitEntryPatterns = config.optimizeDeps?.entries + const explicitEntryPatterns = config.optimizeDeps.entries const buildInput = config.build.rollupOptions?.input if (explicitEntryPatterns) { @@ -80,9 +81,15 @@ export async function scanImports(config: ResolvedConfig): Promise<{ ) if (!entries.length) { - config.logger.warn( - 'Could not determine entry point from rollupOptions or html files. Skipping dependency pre-bundling.' - ) + if (!explicitEntryPatterns && !config.optimizeDeps.include) { + config.logger.warn( + chalk.yellow( + '(!) Could not auto-determine entry point from rollupOptions or html files ' + + 'and there are no explicit optimizeDeps.include patterns. ' + + 'Skipping dependency pre-bundling.' + ) + ) + } return { deps: {}, missing: {} } } else { debug(`Crawling dependencies using entries:\n ${entries.join('\n ')}`) From a3f2238e3edf37562df925b73d0fbd7ea2b64565 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Fri, 8 Oct 2021 08:46:41 -0500 Subject: [PATCH 06/26] chore: revise typo (#5233) --- packages/vite/src/node/plugins/assetImportMetaUrl.ts | 2 +- packages/vite/src/node/plugins/html.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/node/plugins/assetImportMetaUrl.ts b/packages/vite/src/node/plugins/assetImportMetaUrl.ts index d7f8125c6c6622..a0da45f4aaf155 100644 --- a/packages/vite/src/node/plugins/assetImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/assetImportMetaUrl.ts @@ -8,7 +8,7 @@ import { multilineCommentsRE, singlelineCommentsRE } from '../utils' /** * Convert `new URL('./foo.png', import.meta.url)` to its resolved built URL * - * Supports tempalte string with dynamic segments: + * Supports template string with dynamic segments: * ``` * new URL(`./dir/${name}.png`, import.meta.url) * // transformed to diff --git a/packages/vite/src/node/plugins/html.ts b/packages/vite/src/node/plugins/html.ts index b88983bb2d3ffc..cdc1dd10da82cf 100644 --- a/packages/vite/src/node/plugins/html.ts +++ b/packages/vite/src/node/plugins/html.ts @@ -401,7 +401,7 @@ export function buildHtmlPlugin(config: ResolvedConfig): Plugin { if (chunk) { // an entry chunk can be inlined if // - it's an ES module (e.g. not generated by the legacy plugin) - // - it contains no meaningful code other than import statments + // - it contains no meaningful code other than import statements if (options.format === 'es' && isEntirelyImport(chunk.code)) { canInlineEntry = true } From 7255fd5f04e71e81d80a0a28fad3ac72bffe186e Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sat, 9 Oct 2021 14:46:00 +0800 Subject: [PATCH 07/26] fix(server): skipped for ended response (#5230) --- packages/vite/src/node/server/middlewares/indexHtml.ts | 4 ++++ packages/vite/src/node/server/send.ts | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/packages/vite/src/node/server/middlewares/indexHtml.ts b/packages/vite/src/node/server/middlewares/indexHtml.ts index 9d870fe8df8f19..45d0e8f3749eae 100644 --- a/packages/vite/src/node/server/middlewares/indexHtml.ts +++ b/packages/vite/src/node/server/middlewares/indexHtml.ts @@ -151,6 +151,10 @@ export function indexHtmlMiddleware( ): Connect.NextHandleFunction { // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...` return async function viteIndexHtmlMiddleware(req, res, next) { + if (res.writableEnded) { + return next() + } + const url = req.url && cleanUrl(req.url) // spa-fallback always redirects to /index.html if (url?.endsWith('.html') && req.headers['sec-fetch-dest'] !== 'script') { diff --git a/packages/vite/src/node/server/send.ts b/packages/vite/src/node/server/send.ts index 1c54ec46f88af8..777e91abf9438c 100644 --- a/packages/vite/src/node/server/send.ts +++ b/packages/vite/src/node/server/send.ts @@ -20,6 +20,10 @@ export function send( cacheControl = 'no-cache', map?: SourceMap | null ): void { + if (res.writableEnded) { + return + } + if (req.headers['if-none-match'] === etag) { res.statusCode = 304 return res.end() From bbb406764da73ec3fbf6e4dd0b77c9fcc16ec567 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Sat, 9 Oct 2021 18:07:14 +0800 Subject: [PATCH 08/26] docs: explain how to watch files inside `node_modules` (#5239) --- docs/config/index.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/config/index.md b/docs/config/index.md index c141e7be88712f..370fee4ef35c2d 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -485,6 +485,23 @@ export default defineConfig(async ({ command, mode }) => { When running Vite on Windows Subsystem for Linux (WSL) 2, if the project folder resides in a Windows filesystem, you'll need to set this option to `{ usePolling: true }`. This is due to [a WSL2 limitation](https://github.com/microsoft/WSL/issues/4739) with the Windows filesystem. + The Vite server watcher skips `.git/` and `node_modules/` directories by default. If you want to watch a package inside `node_moduels/`, you can pass a negated glob pattern to `server.watch.ignored`. That is: + + ```js + export default defineConfig({ + server: { + watch: { + ignored: ['!**/node_modules/your-package-name/**'] + } + }, + // The watched package must be excluded from optimization, + // so that it can appear in the dependency graph and trigger hot reload. + optimizeDeps: { + exclude: ['your-package-name'] + } + }) + ``` + ### server.middlewareMode - **Type:** `'ssr' | 'html'` From b17444fd97b02bc54410c8575e7d3cb25e4058c2 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Sat, 9 Oct 2021 18:09:06 +0800 Subject: [PATCH 09/26] feat: add `build.cssTarget` option (#5132) fixes #4746 fixes #5070 fixes #4930 --- docs/config/index.md | 11 +++++++++++ packages/playground/css/__tests__/css.spec.ts | 11 +++++++++++ packages/playground/css/main.js | 2 ++ packages/playground/css/minify.css | 3 +++ packages/playground/css/vite.config.js | 3 +++ packages/plugin-legacy/index.js | 9 +++++++++ packages/vite/src/node/build.ts | 14 ++++++++++++++ packages/vite/src/node/plugins/css.ts | 2 +- 8 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 packages/playground/css/minify.css diff --git a/docs/config/index.md b/docs/config/index.md index 370fee4ef35c2d..2d2988d7fd4c6f 100644 --- a/docs/config/index.md +++ b/docs/config/index.md @@ -674,6 +674,17 @@ export default defineConfig({ If disabled, all CSS in the entire project will be extracted into a single CSS file. +### build.cssTarget + +- **Type:** `string | string[]` +- **Default:** the same as [`build.target`](/config/#build-target) + + This options allows users to set a different browser target for CSS minification from the one used for JavaScript transpilation. + + It should only be used when you are targeting a non-mainstream browser. + One example is Android WeChat WebView, which supports most modern JavaScript features but not the [`#RGBA` hexadecimal color notation in CSS](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#rgb_colors). + In this case, you need to set `build.cssTarget` to `chrome61` to prevent vite from transform `rgba()` colors into `#RGBA` hexadecimal notations. + ### build.sourcemap - **Type:** `boolean | 'inline' | 'hidden'` diff --git a/packages/playground/css/__tests__/css.spec.ts b/packages/playground/css/__tests__/css.spec.ts index ad5d9f344813e4..010f028a14ea82 100644 --- a/packages/playground/css/__tests__/css.spec.ts +++ b/packages/playground/css/__tests__/css.spec.ts @@ -338,3 +338,14 @@ test('inlined', async () => { // should not insert css expect(await getColor('.inlined')).toBe('black') }) + +test('minify css', async () => { + if (!isBuild) { + return + } + + // should keep the rgba() syntax + const cssFile = findAssetFile(/index\.\w+\.css$/) + expect(cssFile).toMatch('rgba(') + expect(cssFile).not.toMatch('#ffff00b3') +}) diff --git a/packages/playground/css/main.js b/packages/playground/css/main.js index cd2d6fda9ac0d5..24a278c8687940 100644 --- a/packages/playground/css/main.js +++ b/packages/playground/css/main.js @@ -1,3 +1,5 @@ +import './minify.css' + import css from './imported.css' text('.imported-css', css) diff --git a/packages/playground/css/minify.css b/packages/playground/css/minify.css new file mode 100644 index 00000000000000..ada062407cdb38 --- /dev/null +++ b/packages/playground/css/minify.css @@ -0,0 +1,3 @@ +.test-minify { + color: rgba(255, 255, 0, 0.7); +} diff --git a/packages/playground/css/vite.config.js b/packages/playground/css/vite.config.js index d49dcf4207834d..e4dc8d5a9f265f 100644 --- a/packages/playground/css/vite.config.js +++ b/packages/playground/css/vite.config.js @@ -3,6 +3,9 @@ const path = require('path') * @type {import('vite').UserConfig} */ module.exports = { + build: { + cssTarget: 'chrome61' + }, resolve: { alias: { '@': __dirname diff --git a/packages/plugin-legacy/index.js b/packages/plugin-legacy/index.js index f88b77c5f6a33e..bfa6ee491bcbf6 100644 --- a/packages/plugin-legacy/index.js +++ b/packages/plugin-legacy/index.js @@ -86,6 +86,15 @@ function viteLegacyPlugin(options = {}) { if (!config.build) { config.build = {} } + + if (!config.build.cssTarget) { + // Hint for esbuild that we are targeting legacy browsers when minifying CSS. + // Full CSS compat table available at https://github.com/evanw/esbuild/blob/78e04680228cf989bdd7d471e02bbc2c8d345dc9/internal/compat/css_table.go + // But note that only the `HexRGBA` feature affects the minify outcome. + // HSL & rebeccapurple values will be minified away regardless the target. + // So targeting `chrome61` suffices to fix the compatiblity issue. + config.build.cssTarget = 'chrome61' + } } } diff --git a/packages/vite/src/node/build.ts b/packages/vite/src/node/build.ts index df707be2e85657..148833eabe9b30 100644 --- a/packages/vite/src/node/build.ts +++ b/packages/vite/src/node/build.ts @@ -102,6 +102,15 @@ export interface BuildOptions { * @default true */ cssCodeSplit?: boolean + /** + * An optional separate target for CSS minification. + * As esbuild only supports configuring targets to mainstream + * browsers, users may need this option when they are targeting + * a niche browser that comes with most modern JavaScript features + * but has poor CSS support, e.g. Android WeChat WebView, which + * doesn't support the #RGBA syntax. + */ + cssTarget?: TransformOptions['target'] | false /** * If `true`, a separate sourcemap file will be created. If 'inline', the * sourcemap will be appended to the resulting output file as data URI. @@ -232,6 +241,7 @@ export function resolveBuildOptions(raw?: BuildOptions): ResolvedBuildOptions { assetsDir: 'assets', assetsInlineLimit: 4096, cssCodeSplit: !raw?.lib, + cssTarget: false, sourcemap: false, rollupOptions: {}, minify: raw?.ssr ? false : 'esbuild', @@ -275,6 +285,10 @@ export function resolveBuildOptions(raw?: BuildOptions): ResolvedBuildOptions { resolved.target = 'es2019' } + if (!resolved.cssTarget) { + resolved.cssTarget = resolved.target + } + // normalize false string into actual false if ((resolved.minify as any) === 'false') { resolved.minify = false diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index dd7366874d984b..1a62bf7f028d13 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -906,7 +906,7 @@ async function minifyCSS(css: string, config: ResolvedConfig) { const { code, warnings } = await transform(css, { loader: 'css', minify: true, - target: config.build.target || undefined + target: config.build.cssTarget || undefined }) if (warnings.length) { const msgs = await formatMessages(warnings, { kind: 'warning' }) From 18371415d9662fbb7d398779fd8e6086474486f1 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 11 Oct 2021 22:25:27 +0800 Subject: [PATCH 10/26] release: v2.6.6 --- packages/vite/CHANGELOG.md | 15 +++++++++++++++ packages/vite/package.json | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/vite/CHANGELOG.md b/packages/vite/CHANGELOG.md index 2e8fcd3a8a5603..889991717e4d67 100644 --- a/packages/vite/CHANGELOG.md +++ b/packages/vite/CHANGELOG.md @@ -1,3 +1,18 @@ +## [2.6.6](https://github.com/vitejs/vite/compare/v2.6.5...v2.6.6) (2021-10-11) + + +### Bug Fixes + +* avoid unnecessary pre-bundling warning ([b586098](https://github.com/vitejs/vite/commit/b58609829262255d73363229584a2341bc4f568d)) +* **server:** skipped for ended response ([#5230](https://github.com/vitejs/vite/issues/5230)) ([7255fd5](https://github.com/vitejs/vite/commit/7255fd5f04e71e81d80a0a28fad3ac72bffe186e)) + + +### Features + +* add `build.cssTarget` option ([#5132](https://github.com/vitejs/vite/issues/5132)) ([b17444f](https://github.com/vitejs/vite/commit/b17444fd97b02bc54410c8575e7d3cb25e4058c2)), closes [#4746](https://github.com/vitejs/vite/issues/4746) [#5070](https://github.com/vitejs/vite/issues/5070) [#4930](https://github.com/vitejs/vite/issues/4930) + + + ## [2.6.5](https://github.com/vitejs/vite/compare/v2.6.4...v2.6.5) (2021-10-07) diff --git a/packages/vite/package.json b/packages/vite/package.json index 384d34c86ea663..f95f3575e9ecaa 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -1,6 +1,6 @@ { "name": "vite", - "version": "2.6.5", + "version": "2.6.6", "license": "MIT", "author": "Evan You", "description": "Native-ESM powered web dev build tool", From 9e3bb6513e3580d9fdf462bfc791dcf95a5220c2 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 11 Oct 2021 22:26:42 +0800 Subject: [PATCH 11/26] chore: unresolved deps for client build --- packages/vite/rollup.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/rollup.config.js b/packages/vite/rollup.config.js index 783c3c1d993de8..f7fb887a09c809 100644 --- a/packages/vite/rollup.config.js +++ b/packages/vite/rollup.config.js @@ -38,7 +38,7 @@ const envConfig = { */ const clientConfig = { input: path.resolve(__dirname, 'src/client/client.ts'), - external: ['./env'], + external: ['./env', '@vite/env'], plugins: [ typescript({ target: 'es2018', From bdc2baf94beec7963d5aec979eb11bb43385b21a Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 11 Oct 2021 22:27:35 +0800 Subject: [PATCH 12/26] release: plugin-legacy@1.6.2 --- packages/plugin-legacy/CHANGELOG.md | 9 +++++++++ packages/plugin-legacy/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/plugin-legacy/CHANGELOG.md b/packages/plugin-legacy/CHANGELOG.md index 471d55be7bb243..92a2a5cac70aca 100644 --- a/packages/plugin-legacy/CHANGELOG.md +++ b/packages/plugin-legacy/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.6.2](https://github.com/vitejs/vite/compare/plugin-legacy@1.6.1...plugin-legacy@1.6.2) (2021-10-11) + + +### Features + +* add `build.cssTarget` option ([#5132](https://github.com/vitejs/vite/issues/5132)) ([b17444f](https://github.com/vitejs/vite/commit/b17444fd97b02bc54410c8575e7d3cb25e4058c2)), closes [#4746](https://github.com/vitejs/vite/issues/4746) [#5070](https://github.com/vitejs/vite/issues/5070) [#4930](https://github.com/vitejs/vite/issues/4930) + + + ## [1.6.1](https://github.com/vitejs/vite/compare/plugin-legacy@1.6.0...plugin-legacy@1.6.1) (2021-10-05) diff --git a/packages/plugin-legacy/package.json b/packages/plugin-legacy/package.json index 438ca52d7ac690..4ba8e9138daf40 100644 --- a/packages/plugin-legacy/package.json +++ b/packages/plugin-legacy/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-legacy", - "version": "1.6.1", + "version": "1.6.2", "license": "MIT", "author": "Evan You", "files": [ From 16c9d7cc8f1dbbcb8e9c7b2dc6804555634d52fb Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 11 Oct 2021 22:28:52 +0800 Subject: [PATCH 13/26] release: plugin-react@1.0.3 --- packages/plugin-react/CHANGELOG.md | 9 +++++++++ packages/plugin-react/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/plugin-react/CHANGELOG.md b/packages/plugin-react/CHANGELOG.md index 286e22ed7201d2..96e939418bd39a 100644 --- a/packages/plugin-react/CHANGELOG.md +++ b/packages/plugin-react/CHANGELOG.md @@ -1,3 +1,12 @@ +## [1.0.3](https://github.com/vitejs/vite/compare/plugin-react@1.0.2...plugin-react@1.0.3) (2021-10-11) + + +### Bug Fixes + +* **plugin-react:** turn off jsx for .ts ([#5198](https://github.com/vitejs/vite/issues/5198)) ([916f9d3](https://github.com/vitejs/vite/commit/916f9d3984d5e83f7cb869b3606a1f043a814b97)), closes [#5102](https://github.com/vitejs/vite/issues/5102) + + + ## [1.0.2](https://github.com/vitejs/vite/compare/plugin-react@1.0.1...plugin-react@1.0.2) (2021-10-05) diff --git a/packages/plugin-react/package.json b/packages/plugin-react/package.json index 51026a8c88f1f8..90f922b25f7e5e 100644 --- a/packages/plugin-react/package.json +++ b/packages/plugin-react/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-react", - "version": "1.0.2", + "version": "1.0.3", "license": "MIT", "author": "Evan You", "contributors": [ From 22da84ad3659afe10536f95fd46e73e4361d927f Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 11 Oct 2021 22:34:19 +0800 Subject: [PATCH 14/26] build: don't skip build for plugin-react --- packages/plugin-react/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugin-react/package.json b/packages/plugin-react/package.json index 90f922b25f7e5e..c833b7f551f2f5 100644 --- a/packages/plugin-react/package.json +++ b/packages/plugin-react/package.json @@ -18,7 +18,7 @@ "build-bundle": "esbuild src/index.ts --bundle --platform=node --target=node12 --external:@babel/* --external:@rollup/* --external:resolve --external:react-refresh/* --outfile=dist/index.js", "build-types": "tsc -p . --emitDeclarationOnly --outDir temp && api-extractor run && rimraf temp", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s --commit-path . --lerna-package plugin-react", - "release": "node ../../scripts/release.js --skipBuild" + "release": "node ../../scripts/release.js" }, "engines": { "node": ">=12.0.0" From df15d649eac325f420d4040af745dd2be1b6dc4e Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 11 Oct 2021 22:34:45 +0800 Subject: [PATCH 15/26] release: plugin-react@1.0.4 --- packages/plugin-react/CHANGELOG.md | 4 ++++ packages/plugin-react/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/plugin-react/CHANGELOG.md b/packages/plugin-react/CHANGELOG.md index 96e939418bd39a..a78eaf244774f0 100644 --- a/packages/plugin-react/CHANGELOG.md +++ b/packages/plugin-react/CHANGELOG.md @@ -1,3 +1,7 @@ +## [1.0.4](https://github.com/vitejs/vite/compare/plugin-react@1.0.3...plugin-react@1.0.4) (2021-10-11) + + + ## [1.0.3](https://github.com/vitejs/vite/compare/plugin-react@1.0.2...plugin-react@1.0.3) (2021-10-11) diff --git a/packages/plugin-react/package.json b/packages/plugin-react/package.json index c833b7f551f2f5..a88ae5802303d9 100644 --- a/packages/plugin-react/package.json +++ b/packages/plugin-react/package.json @@ -1,6 +1,6 @@ { "name": "@vitejs/plugin-react", - "version": "1.0.3", + "version": "1.0.4", "license": "MIT", "author": "Evan You", "contributors": [ From 054242ec7e48e95de24f2412705ecac984be4de8 Mon Sep 17 00:00:00 2001 From: patak Date: Mon, 11 Oct 2021 16:42:07 +0200 Subject: [PATCH 16/26] docs: trying Vite online with StackBlitz (#5243) --- docs/guide/index.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/guide/index.md b/docs/guide/index.md index dae44ce09b3910..43421f6b52b79a 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -20,6 +20,21 @@ You can learn more about the rationale behind the project in the [Why Vite](./wh - The default build targets browsers that support both [native ESM via script tags](https://caniuse.com/es6-module) and [native ESM dynamic import](https://caniuse.com/es6-module-dynamic-import). Legacy browsers can be supported via the official [@vitejs/plugin-legacy](https://github.com/vitejs/vite/tree/main/packages/plugin-legacy) - see the [Building for Production](./build) section for more details. +## Trying Vite Online + +You can try Vite online on [StackBlitz](https://vite.new/). It runs the Vite-based build setup directly in the browser, so it is almost identical to the local setup but doesn't require installing anything on your machine. You can navigate to `vite.new/{template}` to select which framework to use. + +The supported template presets are: + +| JavaScript | TypeScript | +| :---: | :---: | +| [vanilla](https://vite.new/vanilla) | [vanilla-ts](https://vite.new/vanilla-ts) | +| [vue](https://vite.new/vue) | [vue-ts](https://vite.new/vue-ts) | +| [react](https://vite.new/react) | [react-ts](https://vite.new/react-ts) | +| [preact](https://vite.new/preact) | [preact-ts](https://vite.new/preact-ts) | +| [lit](https://vite.new/lit) | [lit-ts](https://vite.new/lit-ts) | +| [svelte](https://vite.new/svelte) | [svelte-ts](https://vite.new/svelte-ts) | + ## Scaffolding Your First Vite Project ::: tip Compatibility Note @@ -59,22 +74,7 @@ npm init vite@latest my-vue-app -- --template vue yarn create vite my-vue-app --template vue ``` -Supported template presets include: - -- `vanilla` -- `vanilla-ts` -- `vue` -- `vue-ts` -- `react` -- `react-ts` -- `preact` -- `preact-ts` -- `lit` -- `lit-ts` -- `svelte` -- `svelte-ts` - -See [create-vite](https://github.com/vitejs/vite/tree/main/packages/create-vite) for more details on each template. +See [create-vite](https://github.com/vitejs/vite/tree/main/packages/create-vite) for more details on each supported template: `vanilla`, `vanilla-ts`, `vue`, `vue-ts`, `react`, `react-ts`, `preact`, `preact-ts`, `lit`, `lit-ts`, `svelte`, `svelte-ts`. ## Community Templates From 04b163c60d06217b62f99757efe07020f940c34f Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 11 Oct 2021 23:03:11 +0800 Subject: [PATCH 17/26] release: v2.6.7 --- packages/vite/CHANGELOG.md | 4 ++++ packages/vite/package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/vite/CHANGELOG.md b/packages/vite/CHANGELOG.md index 889991717e4d67..a2ef5adb17b299 100644 --- a/packages/vite/CHANGELOG.md +++ b/packages/vite/CHANGELOG.md @@ -1,3 +1,7 @@ +## [2.6.7](https://github.com/vitejs/vite/compare/v2.6.6...v2.6.7) (2021-10-11) + + + ## [2.6.6](https://github.com/vitejs/vite/compare/v2.6.5...v2.6.6) (2021-10-11) diff --git a/packages/vite/package.json b/packages/vite/package.json index f95f3575e9ecaa..b7375067e6308c 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -1,6 +1,6 @@ { "name": "vite", - "version": "2.6.6", + "version": "2.6.7", "license": "MIT", "author": "Evan You", "description": "Native-ESM powered web dev build tool", From 386ca79da5c54c35cdff978d0f48481bbbaacd44 Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Mon, 11 Oct 2021 09:37:17 -0700 Subject: [PATCH 18/26] fix: avoid scan failures in .svelte and .astro files (#5193) Co-authored-by: Bjorn Lu <34116392+bluwy@users.noreply.github.com> --- packages/vite/src/node/optimizer/scan.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/optimizer/scan.ts b/packages/vite/src/node/optimizer/scan.ts index ad6d19db3e7893..aac6f24cd79f4b 100644 --- a/packages/vite/src/node/optimizer/scan.ts +++ b/packages/vite/src/node/optimizer/scan.ts @@ -272,11 +272,15 @@ function esbuildScanPlugin( } } - if (!code.includes(`export default`)) { - js += `\nexport default {}` + // This will trigger incorrectly if `export default` is contained + // anywhere in a string. Svelte and Astro files can't have + // `export default` as code so we know if it's encountered it's a + // false positive (e.g. contained in a string) + if (!path.endsWith('.vue') || !js.includes('export default')) { + js += '\nexport default {}' } - if (code.includes('import.meta.glob')) { + if (js.includes('import.meta.glob')) { return { // transformGlob already transforms to js loader: 'js', From 7674cf2e558c6209f667a112a7862058fe7290c8 Mon Sep 17 00:00:00 2001 From: Matthew Phillips Date: Tue, 12 Oct 2021 11:35:05 -0400 Subject: [PATCH 19/26] fix(ssr): make import.meta.url be the filesystem URL (#5268) --- packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts | 5 +++++ packages/playground/ssr-vue/src/pages/Home.vue | 10 +++++++++- packages/vite/src/node/ssr/ssrModuleLoader.ts | 6 +++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts b/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts index b92da5fc22bd63..f0ab340bc0ae4b 100644 --- a/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts +++ b/packages/playground/ssr-vue/__tests__/ssr-vue.spec.ts @@ -142,3 +142,8 @@ test('client navigation', async () => { editFile('src/pages/About.vue', (code) => code.replace('About', 'changed')) await untilUpdated(() => page.textContent('h1'), 'changed') }) + +test('import.meta.url', async () => { + await page.goto(url) + expect(await page.textContent('.protocol')).toEqual('file:') +}) \ No newline at end of file diff --git a/packages/playground/ssr-vue/src/pages/Home.vue b/packages/playground/ssr-vue/src/pages/Home.vue index b0003df3e9d0c9..05d39cf69ff1ae 100644 --- a/packages/playground/ssr-vue/src/pages/Home.vue +++ b/packages/playground/ssr-vue/src/pages/Home.vue @@ -7,6 +7,8 @@

msg from virtual module: {{ foo.msg }}

this will be styled with a font-face

+

{{ state.url }}

+

{{ state.protocol }}

@@ -21,7 +23,13 @@ const Foo = defineAsyncComponent(() => function load(file) { return defineAsyncComponent(() => import(`../components/${file}.vue`)) } -const state = reactive({ count: 0 }) +const url = import.meta.env.SSR ? import.meta.url : document.querySelector('.import-meta-url').textContent +const protocol = new URL(url).protocol +const state = reactive({ + count: 0, + protocol, + url +})