From 764e9e2d69749c26de16ec13c835f34c17c83ad5 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Thu, 3 Dec 2020 16:08:11 +0800 Subject: [PATCH 1/6] fix(cli): improve import regexp --- packages/vant-cli/src/compiler/get-deps.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vant-cli/src/compiler/get-deps.ts b/packages/vant-cli/src/compiler/get-deps.ts index 3b49d9e87..367c3f951 100644 --- a/packages/vant-cli/src/compiler/get-deps.ts +++ b/packages/vant-cli/src/compiler/get-deps.ts @@ -6,7 +6,7 @@ let depsMap: Record = {}; let existsCache: Record = {}; // https://regexr.com/47jlq -const IMPORT_RE = /import\s+?(?:(?:(?:[\w*\s{},]*)\s+from\s+?)|)(?:(?:".*?")|(?:'.*?'))[\s]*?(?:;|$|)/g; +const IMPORT_RE = /import\s+?(?:(?:(?:[\w*\s{},]*)\s+from(\s+)?)|)(?:(?:".*?")|(?:'.*?'))[\s]*?(?:;|$|)/g; function matchImports(code: string): string[] { return code.match(IMPORT_RE) || []; From ac856c2673fdbe9c38e6e5dc59ee2e4dfefc629e Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Thu, 3 Dec 2020 16:21:59 +0800 Subject: [PATCH 2/6] fix(cli): failed to import sfc after build --- packages/vant-cli/src/common/css.ts | 2 +- packages/vant-cli/src/compiler/compile-js.ts | 8 +++++--- packages/vant-cli/src/compiler/compile-sfc.ts | 6 ++---- packages/vant-cli/src/compiler/get-deps.ts | 12 ++++++++++++ 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/packages/vant-cli/src/common/css.ts b/packages/vant-cli/src/common/css.ts index 72cd04011..e8453e465 100644 --- a/packages/vant-cli/src/common/css.ts +++ b/packages/vant-cli/src/common/css.ts @@ -38,7 +38,7 @@ export function getCssBaseFile() { const IMPORT_STYLE_RE = /import\s+?(?:(?:".*?")|(?:'.*?'))[\s]*?(?:;|$|)/g; // "import 'a.less';" => "import 'a.css';" -export function replaceCssImport(code: string) { +export function replaceCssImportExt(code: string) { return code.replace(IMPORT_STYLE_RE, str => str.replace(`.${CSS_LANG}`, '.css') ); diff --git a/packages/vant-cli/src/compiler/compile-js.ts b/packages/vant-cli/src/compiler/compile-js.ts index cc603bd57..a2d976b98 100644 --- a/packages/vant-cli/src/compiler/compile-js.ts +++ b/packages/vant-cli/src/compiler/compile-js.ts @@ -1,16 +1,18 @@ import { transformAsync } from '@babel/core'; import { readFileSync, removeSync, outputFileSync } from 'fs-extra'; import { replaceExt } from '../common'; -import { replaceCssImport } from '../common/css'; +import { replaceCssImportExt } from '../common/css'; +import { replaceScriptImportExt } from './get-deps'; export function compileJs(filePath: string): Promise { return new Promise((resolve, reject) => { let code = readFileSync(filePath, 'utf-8'); - code = replaceCssImport(code); + code = replaceCssImportExt(code); + code = replaceScriptImportExt(code, '.vue', ''); transformAsync(code, { filename: filePath }) - .then(result => { + .then((result) => { if (result) { const jsFilePath = replaceExt(filePath, '.js'); diff --git a/packages/vant-cli/src/compiler/compile-sfc.ts b/packages/vant-cli/src/compiler/compile-sfc.ts index 0a162e3c9..11198e432 100644 --- a/packages/vant-cli/src/compiler/compile-sfc.ts +++ b/packages/vant-cli/src/compiler/compile-sfc.ts @@ -87,7 +87,7 @@ export async function compileSfc(filePath: string): Promise { const descriptor = parseSfc(filePath); const { template, styles } = descriptor; - const hasScoped = styles.some(s => s.scoped); + const hasScoped = styles.some((s) => s.scoped); const scopeId = hasScoped ? `data-v-${hash(source)}` : ''; // compile js part @@ -107,9 +107,7 @@ export async function compileSfc(filePath: string): Promise { } writeFileSync(jsFilePath, script); - compileJs(jsFilePath) - .then(resolve) - .catch(reject); + compileJs(jsFilePath).then(resolve).catch(reject); }) ); } diff --git a/packages/vant-cli/src/compiler/get-deps.ts b/packages/vant-cli/src/compiler/get-deps.ts index 367c3f951..a13404606 100644 --- a/packages/vant-cli/src/compiler/get-deps.ts +++ b/packages/vant-cli/src/compiler/get-deps.ts @@ -71,3 +71,15 @@ export function getDeps(filePath: string) { return paths; } + +// "import App from 'App.vue';" => "import App from 'App.xxx';" +export function replaceScriptImportExt(code: string, from: string, to: string) { + const importLines = matchImports(code); + + importLines.forEach(importLine => { + const result = importLine.replace(from, to); + code = code.replace(importLine, result); + }); + + return code; +} From 7095773854e25fbed2a5fe0ad7f096b9cc395e9d Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Thu, 3 Dec 2020 16:42:23 +0800 Subject: [PATCH 3/6] feat(cli): add site.htmlPluginOptions config --- packages/vant-cli/docs/config.md | 7 +++++++ packages/vant-cli/src/config/webpack.site.dev.ts | 3 +++ 2 files changed, 10 insertions(+) diff --git a/packages/vant-cli/docs/config.md b/packages/vant-cli/docs/config.md index 794a71607..ad0abdeaa 100644 --- a/packages/vant-cli/docs/config.md +++ b/packages/vant-cli/docs/config.md @@ -222,6 +222,13 @@ module.exports = { 配置内容参见 [docsearch](https://docsearch.algolia.com/docs/behavior)。 +### site.htmlPluginOptions + +- Type: `object` +- Default: `undefined` + +html-webpack-plugin 的配置项,详见 [Options](https://github.com/jantimon/html-webpack-plugin#options)。 + ## Webpack 通过根目录下的`webpack.config.js`文件可以修改 Webpack 配置,配置内容会通过 [webpack-merge](https://github.com/survivejs/webpack-merge) 合并到最终的配置中。 diff --git a/packages/vant-cli/src/config/webpack.site.dev.ts b/packages/vant-cli/src/config/webpack.site.dev.ts index 0346e1428..48fea0291 100644 --- a/packages/vant-cli/src/config/webpack.site.dev.ts +++ b/packages/vant-cli/src/config/webpack.site.dev.ts @@ -39,6 +39,7 @@ export function getSiteDevBaseConfig(): WebpackConfig { const siteConfig = getSiteConfig(); const title = getTitle(siteConfig); + const { htmlPluginOptions } = vantConfig.site; return merge(baseConfig as any, { entry: { @@ -88,6 +89,7 @@ export function getSiteDevBaseConfig(): WebpackConfig { template: join(__dirname, '../../site/desktop/index.html'), filename: 'index.html', baiduAnalytics, + ...htmlPluginOptions, }), new HtmlWebpackPlugin({ title, @@ -97,6 +99,7 @@ export function getSiteDevBaseConfig(): WebpackConfig { template: join(__dirname, '../../site/mobile/index.html'), filename: 'mobile.html', baiduAnalytics, + ...htmlPluginOptions, }), ], }); From 9ab43d1545fb6e569e50a3fc679c5efb524e36db Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Thu, 3 Dec 2020 16:44:24 +0800 Subject: [PATCH 4/6] chore: release @vant/cli@2.7.0 --- packages/vant-cli/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index e57dd8bdb..cc2062ef0 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -1,6 +1,6 @@ { "name": "@vant/cli", - "version": "2.6.2", + "version": "2.7.0", "description": "", "main": "lib/index.js", "typings": "lib/index.d.ts", From 31d42b4f8026e20c33d26998ec54f5877f25b26f Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Thu, 3 Dec 2020 17:13:35 +0800 Subject: [PATCH 5/6] docs(cli): changelog 2.7.0 --- package.json | 2 +- packages/vant-cli/changelog.md | 5 +++++ yarn.lock | 8 ++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d13133d5a..8bec5cb5e 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "vue": ">= 2.5.22" }, "devDependencies": { - "@vant/cli": "^2.6.2", + "@vant/cli": "^2.7.0", "prettier": "^2.0.4", "vue": "^2.6.12", "vue-template-compiler": "^2.6.12" diff --git a/packages/vant-cli/changelog.md b/packages/vant-cli/changelog.md index 88fcb4420..7c728e57a 100644 --- a/packages/vant-cli/changelog.md +++ b/packages/vant-cli/changelog.md @@ -1,5 +1,10 @@ # 更新日志 +## v2.7.0 + +- 支持通过 `site.htmlPluginOptions` 来配置 html-webpack-plugin +- 修复组件内部引用 `.vue` 文件时 build 结果不正确的问题 + ## v2.6.2 `2020-11-15` diff --git a/yarn.lock b/yarn.lock index 95a1ef703..1eb8255af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2000,10 +2000,10 @@ semver "^6.3.0" tsutils "^3.17.1" -"@vant/cli@^2.6.2": - version "2.6.2" - resolved "https://registry.npm.taobao.org/@vant/cli/download/@vant/cli-2.6.2.tgz#90346d3916a1d3a448ef030bc699d8d28a31efe5" - integrity sha1-kDRtORah06RI7wMLxpnY0oox7+U= +"@vant/cli@^2.7.0": + version "2.7.0" + resolved "https://registry.npm.taobao.org/@vant/cli/download/@vant/cli-2.7.0.tgz#e3475f4a0efaeba85571fac64f40cd92361db209" + integrity sha1-40dfSg7666hVcfrGT0DNkjYdsgk= dependencies: "@babel/core" "^7.10.1" "@babel/plugin-syntax-jsx" "^7.10.1" From 82ce590eb87859c4545a69a1af1deff24a912902 Mon Sep 17 00:00:00 2001 From: chenjiahan Date: Thu, 3 Dec 2020 17:13:51 +0800 Subject: [PATCH 6/6] docs(site): add docsearch version meta --- vant.config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vant.config.js b/vant.config.js index c132b93ee..af14cccff 100644 --- a/vant.config.js +++ b/vant.config.js @@ -18,6 +18,11 @@ module.exports = { baiduAnalytics: { seed: 'ad6b5732c36321f2dafed737ac2da92f', }, + htmlPluginOptions: { + meta: { + 'docsearch:version': '2.x', + }, + }, locales: { 'zh-CN': { title: 'Vant',