diff --git a/.github/workflows/deploy-v3-site.yml b/.github/workflows/deploy-v3-site.yml index 1c410fb54..96e5cb5c5 100644 --- a/.github/workflows/deploy-v3-site.yml +++ b/.github/workflows/deploy-v3-site.yml @@ -17,8 +17,6 @@ jobs: - name: Install dependencies uses: bahmutov/npm-install@v1 - with: - working-directory: packages/vant - name: Build Site run: npm run build:site diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b3e2663d0..d8e9f7d73 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,8 +13,6 @@ jobs: - name: Install dependencies uses: bahmutov/npm-install@v1 - with: - working-directory: packages/vant - name: Run linter run: npm run lint @@ -29,8 +27,6 @@ jobs: - name: Install dependencies uses: bahmutov/npm-install@v1 - with: - working-directory: packages/vant - name: Run test cases run: npm test @@ -50,8 +46,6 @@ jobs: - name: Install dependencies uses: bahmutov/npm-install@v1 - with: - working-directory: packages/vant - name: Build run: npm run build diff --git a/.gitignore b/.gitignore index 598d74a40..e7fa2a6cb 100644 --- a/.gitignore +++ b/.gitignore @@ -16,5 +16,5 @@ es lib dist vetur -./site +**/site-dist changelog.generated.md diff --git a/.husky/commit-msg b/.husky/commit-msg index 6228637fc..59ef27686 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -cd packages/vant && npx --no-install vant-cli commit-lint ../../$1 +npx --no-install vant-cli commit-lint $1 diff --git a/.husky/pre-commit b/.husky/pre-commit index a98fa020f..d37daa075 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -cd packages/vant && npx --no-install lint-staged +npx --no-install lint-staged diff --git a/package.json b/package.json index b60dda2f8..8f4277396 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,23 @@ { "private": true, + "workspaces": [ + "packages/vant", + "packages/vant-cli", + "packages/vant-eslint-config", + "packages/vant-stylelint-config" + ], "scripts": { - "prepare": "husky install", + "prepare": "husky install && cd packages/vant-cli && yarn build", "dev": "cd packages/vant && yarn dev", "lint": "cd packages/vant && yarn lint", "test": "cd packages/vant && yarn test", "build": "cd packages/vant && yarn build", "build:site": "cd packages/vant && yarn build:site" + }, + "lint-staged": { + "*.md": "prettier --write", + "*.{ts,tsx,js,vue,less}": "prettier --write", + "*.{ts,tsx,js,vue}": "eslint --fix", + "*.{vue,css,less}": "stylelint --fix" } } diff --git a/packages/create-vant-cli-app/generators/vue2/package.json.tpl b/packages/create-vant-cli-app/generators/vue2/package.json.tpl index 1257aeb7c..d9f68c53e 100644 --- a/packages/create-vant-cli-app/generators/vue2/package.json.tpl +++ b/packages/create-vant-cli-app/generators/vue2/package.json.tpl @@ -15,7 +15,7 @@ "build": "vant-cli build", "release": "vant-cli release", "test:coverage": "open test/coverage/index.html", - "build-site": "vant-cli build-site && gh-pages -d site" + "build-site": "vant-cli build-site && gh-pages -d site-dist" }, "author": "", "license": "MIT", diff --git a/packages/create-vant-cli-app/generators/vue3/package.json.tpl b/packages/create-vant-cli-app/generators/vue3/package.json.tpl index 8bcba4dc1..c667d4c71 100644 --- a/packages/create-vant-cli-app/generators/vue3/package.json.tpl +++ b/packages/create-vant-cli-app/generators/vue3/package.json.tpl @@ -16,7 +16,7 @@ "prepare": "husky install", "release": "vant-cli release", "test:coverage": "open test/coverage/index.html", - "build-site": "vant-cli build-site && gh-pages -d site" + "build-site": "vant-cli build-site && gh-pages -d site-dist" }, "author": "", "license": "MIT", diff --git a/packages/vant-cli/bin.js b/packages/vant-cli/bin.js new file mode 100755 index 000000000..50cba5b2b --- /dev/null +++ b/packages/vant-cli/bin.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('./lib/cli'); diff --git a/packages/vant-cli/changelog.md b/packages/vant-cli/changelog.md index 19df5b83f..57118d6db 100644 --- a/packages/vant-cli/changelog.md +++ b/packages/vant-cli/changelog.md @@ -1,8 +1,29 @@ # 更新日志 -## v4.0.0 +## v4.0.0-beta.6 -`unreleased` +### 不兼容更新 + +- 使用 vite 代替 webpack 进行构建,移除了所有 webpack 相关依赖 +- 站点构建产物的目录由 `site` 调整为 `site-dist` +- 不再支持 webpack.config.js 配置文件 +- 不再支持 less import 语法中使用波浪号 +- 不再在 demo 文件中自动注册组件 +- 移除 build 命令的 --watch 参数 +- 移除内置的 babel-plugin-import 插件 +- 由于不再使用 html-webpack-plugin, 因此移除了 site.htmlPluginOptions 配置项 +- 为了减少依赖数量,移除了默认安装的 sass 依赖,使用 sass 时需要手动安装: + +```bash +yarn add sass +``` + +### Features + +- 新增 site.htmlMeta 配置项 +- 新增 ESModule 格式的构建产物,分别为 `lib/[name].es.js` 和 `lib/[name].es.min.js` + +### 依赖升级 对以下依赖进行了大版本升级: @@ -12,15 +33,9 @@ - postcss v8 - clean-css v5 - commander v8 -- css-loader v6 - babel-jest v27 -- sass-loader v12 -- less-loader v10 - lint-staged v11 -- style-loader v3 - autoprefixer v10 -- postcss-loader v6 -- webpack-dev-server v4 ## v3.11.2 diff --git a/packages/vant-cli/docs/config.md b/packages/vant-cli/docs/config.md index 8cfc40e13..101503d1e 100644 --- a/packages/vant-cli/docs/config.md +++ b/packages/vant-cli/docs/config.md @@ -4,7 +4,7 @@ - [vant.config.js](#vantconfigjs) - [name](#name) - [build.css](#buildcss) - - [build.site](#buildsite) + - [build.site.publicPath](#buildsitepublicpath) - [build.srcDir](#buildsrcdir) - [build.namedExport](#buildnamedexport) - [site.title](#sitetitle) @@ -16,7 +16,7 @@ - [site.searchConfig](#sitesearchconfig) - [site.hideSimulator](#sitehidesimulator) - [site.simulator.url](#sitesimulatorurl) - - [Webpack](#webpack) + - [site.htmlMeta](#sitehtmlmeta) - [Babel](#babel) - [默认配置](#-1) - [依赖](#-2) @@ -95,14 +95,14 @@ module.exports = { }; ``` -### build.site +### build.site.publicPath -- Type: `object` -- Default: `{ publicPath: '/' }` +- Type: `string` +- Default: `/` -`site.publicPath`等价于 webpack 的`output.publicPath`配置。 +等价于 vite 的 `build.outDir` 配置。 -一般来说,我们的文档网站会部署在一个域名的子路径上,如 `https://my.github.io/demo-ui/`,这时候`publicPath`需要跟子路径保持一致,即`/demo-ui/`。 +一般来说,我们的文档网站会部署在一个域名的子路径上,如 `https://my.github.io/demo-ui/`,这时候 `publicPath` 需要跟子路径保持一致,即 `/demo-ui/`。 ```js module.exports = { @@ -253,26 +253,12 @@ module.exports = { 自定义手机模拟器的 iframe URL 地址。 -### site.htmlPluginOptions +### site.htmlMeta -- Type: `object` +- Type: `Record` - 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) 合并到最终的配置中。 - -比如修改 devServer 端口: - -```js -module.exports = { - devServer: { - port: 9000, - }, -}; -``` +配置 HTML 中的 meta 标签,对象的 key 为 name,value 为 content。 ## Babel diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index 8570fb03d..818e11cf6 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -1,10 +1,10 @@ { "name": "@vant/cli", - "version": "4.0.0-beta.1", + "version": "4.0.0-beta.5", "main": "lib/index.js", "typings": "lib/index.d.ts", "bin": { - "vant-cli": "./lib/bin.js" + "vant-cli": "./bin.js" }, "engines": { "node": ">=12" @@ -15,12 +15,14 @@ }, "scripts": { "dev": "tsc --watch", - "release": "tsc & release-it" + "build": "tsc", + "release": "yarn build & release-it" }, "files": [ "lib", "site", "template", + "bin.js", "preset.js" ], "keywords": [ @@ -28,72 +30,63 @@ ], "author": "chenjiahan", "license": "MIT", - "peerDependencies": { - "vue": "^3.0.0" - }, "devDependencies": { "@types/fs-extra": "^9.0.12", + "@types/less": "^3.0.3", "@types/lodash": "^4.14.172", - "@types/postcss-load-config": "^3.0.1" + "@types/postcss-load-config": "^3.0.1", + "@vue/compiler-sfc": "3.2.8", + "vue": "3.2.8" }, "dependencies": { - "@babel/core": "^7.15.0", - "@babel/preset-env": "^7.15.0", + "@babel/core": "^7.15.5", + "@babel/preset-env": "^7.15.4", "@babel/preset-typescript": "^7.15.0", - "@docsearch/css": "3.0.0-alpha.33", - "@docsearch/js": "3.0.0-alpha.33", + "@docsearch/css": "3.0.0-alpha.40", + "@docsearch/js": "3.0.0-alpha.40", "@types/jest": "^27.0.1", "@vant/eslint-config": "^3.3.2", - "@vant/markdown-loader": "^4.1.1", "@vant/markdown-vetur": "^2.2.0", "@vant/stylelint-config": "^1.4.2", "@vant/touch-emulator": "^1.3.2", - "@vue/babel-plugin-jsx": "^1.0.6", + "@vitejs/plugin-vue": "^1.6.1", + "@vitejs/plugin-vue-jsx": "^1.1.8", + "@vue/babel-plugin-jsx": "^1.0.7", "@vue/test-utils": "2.0.0-rc.6", - "autoprefixer": "^10.3.1", - "babel-jest": "^27.0.6", - "babel-loader": "^8.2.2", - "babel-plugin-import": "^1.13.3", - "chokidar": "^3.5.2", + "autoprefixer": "^10.3.4", + "babel-jest": "^27.1.0", "clean-css": "^5.1.5", "commander": "^8.1.0", "consola": "^2.15.3", "conventional-changelog": "^3.1.24", - "css-loader": "^6.2.0", "eslint": "^7.32.0", "fast-glob": "^3.2.7", - "fork-ts-checker-webpack-plugin": "^6.3.2", "gh-pages": "^3.2.3", "hash-sum": "^2.0.0", - "html-webpack-plugin": "^5.3.2", - "husky": "^7.0.1", - "jest": "^27.0.6", + "highlight.js": "^11.2.0", + "husky": "^7.0.2", + "jest": "^27.1.0", "jest-canvas-mock": "^2.3.1", "jest-serializer-html": "^7.1.0", "less": "^4.1.1", - "less-loader": "^10.0.1", "lint-staged": "^11.1.2", "lodash": "^4.17.21", + "markdown-it": "^12.2.0", + "markdown-it-anchor": "^8.3.0", "ora": "^5.4.1", - "portfinder": "^1.0.28", "postcss": "^8.3.6", "postcss-load-config": "^3.1.0", - "postcss-loader": "^6.1.1", "prettier": "^2.3.2", "release-it": "^14.11.5", - "sass": "^1.38.0", - "sass-loader": "^12.1.0", - "style-loader": "^3.2.1", "stylelint": "^13.13.1", + "transliteration": "^2.2.0", "ts-jest": "^27.0.5", - "typescript": "^4.3.5", - "vue3-jest": "^27.0.0-alpha.2", - "vue-loader": "^16.5.0", + "typescript": "^4.4.2", + "vite": "^2.5.4", + "vite-plugin-html": "^2.1.0", + "vite-plugin-md": "^0.11.0", "vue-router": "^4.0.0", - "webpack": "^5.51.1", - "webpack-dev-server": "^4.0.0", - "webpack-merge": "^5.8.0", - "webpackbar": "^5.0.0-3" + "vue3-jest": "^27.0.0-alpha.2" }, "release-it": { "git": { diff --git a/packages/vant-cli/site/desktop/App.vue b/packages/vant-cli/site/desktop/App.vue index b7de5ae20..15592bc90 100644 --- a/packages/vant-cli/site/desktop/App.vue +++ b/packages/vant-cli/site/desktop/App.vue @@ -15,7 +15,7 @@ diff --git a/packages/vant-cli/site/mobile/index.html b/packages/vant-cli/site/mobile.html similarity index 62% rename from packages/vant-cli/site/mobile/index.html rename to packages/vant-cli/site/mobile.html index 35ecf3a99..6ea212898 100644 --- a/packages/vant-cli/site/mobile/index.html +++ b/packages/vant-cli/site/mobile.html @@ -2,32 +2,25 @@ - <%= htmlWebpackPlugin.options.title %> - - + <%- title %> + + + <%- meta %> - <% if (htmlWebpackPlugin.options.baiduAnalytics) { %> + <% if (baiduAnalytics) { %> diff --git a/packages/vant-cli/site/mobile/App.vue b/packages/vant-cli/site/mobile/App.vue index 33f03f6c0..4048572dc 100644 --- a/packages/vant-cli/site/mobile/App.vue +++ b/packages/vant-cli/site/mobile/App.vue @@ -10,7 +10,7 @@ -`; - } - - // 包含 demo-code 的 md 文件,需要走模版渲染 - let styles; - [content, styles] = sideEffectTags(content); - - return ` - - - - -${styles.join('\n')} -`; -} - -module.exports = function (source) { - let options = loaderUtils.getOptions(this) || {}; - this.cacheable && this.cacheable(); - - options = { - wrapper, - linkOpen: true, - ...options, - }; - - let fm; - - if (options.enableMetaData) { - fm = frontMatter(source); - source = fm.body; - } - - if (options.linkOpen) { - linkOpen(parser); - } - - return options.wrapper.call(this, parser.render(source), fm); -}; diff --git a/packages/vant-markdown-loader/src/link-open.js b/packages/vant-markdown-loader/src/link-open.js deleted file mode 100644 index 0e513226a..000000000 --- a/packages/vant-markdown-loader/src/link-open.js +++ /dev/null @@ -1,18 +0,0 @@ -// add target="_blank" to all links -module.exports = function linkOpen(md) { - const defaultRender = - md.renderer.rules.link_open || - function(tokens, idx, options, env, self) { - return self.renderToken(tokens, idx, options); - }; - - md.renderer.rules.link_open = function(tokens, idx, options, env, self) { - const aIndex = tokens[idx].attrIndex('target'); - - if (aIndex < 0) { - tokens[idx].attrPush(['target', '_blank']); // add new attribute - } - - return defaultRender(tokens, idx, options, env, self); - }; -}; diff --git a/packages/vant-markdown-loader/src/md-parser.js b/packages/vant-markdown-loader/src/md-parser.js deleted file mode 100644 index 3940d886f..000000000 --- a/packages/vant-markdown-loader/src/md-parser.js +++ /dev/null @@ -1,14 +0,0 @@ -const MarkdownIt = require('markdown-it'); -const markdownItAnchor = require('markdown-it-anchor'); -const highlight = require('./highlight'); -const { slugify } = require('transliteration'); - -const parser = new MarkdownIt({ - html: true, - highlight, -}).use(markdownItAnchor, { - level: 2, - slugify, -}); - -module.exports = parser; diff --git a/packages/vant-markdown-loader/src/side-effect-tags.js b/packages/vant-markdown-loader/src/side-effect-tags.js deleted file mode 100644 index a7f99fd5b..000000000 --- a/packages/vant-markdown-loader/src/side-effect-tags.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = function sideEffectTags(content) { - const styles = []; - - // 从模版中移除 script 标签 - content = content.replace(/[\s\S]*?<\/script>/g, ''); - - // 从模版中移除 style 标签,并收集到 styles 数组中,以转移为 .vue 文件 的 style 标签 - content = content.replace(/([\s\S]*?)<\/style>/g, (_, css) => { - styles.push(``); - return ''; - }); - - return [content, styles]; -}; diff --git a/packages/vant-markdown-loader/yarn.lock b/packages/vant-markdown-loader/yarn.lock deleted file mode 100644 index c318b4812..000000000 --- a/packages/vant-markdown-loader/yarn.lock +++ /dev/null @@ -1,227 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U= - -ansi-styles@^4.0.0: - version "4.3.0" - resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha1-7dgDYornHATIWuegkG7a00tkiTc= - dependencies: - color-convert "^2.0.1" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE= - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/argparse/download/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg= - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg= - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npm.taobao.org/cliui/download/cliui-7.0.4.tgz?cache=0&sync_timestamp=1604880333411&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08= - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha1-VXBmIEatKeLpFucariYKvf9Pang= - -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/entities/download/entities-2.1.0.tgz?cache=0&sync_timestamp=1611535562200&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha1-mS0xKc999ocLlsV4WMJJoSD4uLU= - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602567437752&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA= - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= - -front-matter@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/front-matter/download/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5" - integrity sha1-sU5U3HRc/XKTSE8yENFepO3X9NU= - dependencies: - js-yaml "^3.13.1" - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= - -highlight.js@^10.7.1: - version "10.7.1" - resolved "https://registry.npm.taobao.org/highlight.js/download/highlight.js-10.7.1.tgz#a8ec4152db24ea630c90927d6cae2a45f8ecb955" - integrity sha1-qOxBUtsk6mMMkJJ9bK4qRfjsuVU= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0= - -js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc= - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz?cache=0&sync_timestamp=1586045666090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM= - dependencies: - minimist "^1.2.5" - -linkify-it@^3.0.1: - version "3.0.2" - resolved "https://registry.npm.taobao.org/linkify-it/download/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8" - integrity sha1-9V7ri8HTrnVASeEkqzu1bZd5f7g= - dependencies: - uc.micro "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha1-5MrOW4FtQloWa18JfhDNErNgZLA= - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -markdown-it-anchor@^7.1.0: - version "7.1.0" - resolved "https://registry.npm.taobao.org/markdown-it-anchor/download/markdown-it-anchor-7.1.0.tgz#30fb21497bf59e83ff4d1ddc052d821962e2489e" - integrity sha1-MPshSXv1noP/TR3cBS2CGWLiSJ4= - -markdown-it@^12.0.4: - version "12.0.4" - resolved "https://registry.npm.taobao.org/markdown-it/download/markdown-it-12.0.4.tgz#eec8247d296327eac3ba9746bdeec9cfcc751e33" - integrity sha1-7sgkfSljJ+rDupdGve7Jz8x1HjM= - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/mdurl/download/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= - -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha1-lSGCxGzHssMT0VluYjmSvRY7crU= - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz?cache=0&sync_timestamp=1573280577145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI= - dependencies: - ansi-regex "^5.0.0" - -transliteration@^2.2.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/transliteration/download/transliteration-2.2.0.tgz#e6333cc74b25ef4465bc27086ed8465c9a19211d" - integrity sha1-5jM8x0sl70RlvCcIbthGXJoZIR0= - dependencies: - yargs "^16.1.0" - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.npm.taobao.org/uc.micro/download/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha1-nEEagCpAmpH8bPdAgbq6NLJEmaw= - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM= - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.npm.taobao.org/y18n/download/y18n-5.0.5.tgz?cache=0&sync_timestamp=1609798602895&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fy18n%2Fdownload%2Fy18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha1-h2nsCNA7HqLfJQCs71YXQ7u5qxg= - -yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-20.2.7.tgz?cache=0&sync_timestamp=1615404893185&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha1-Yd+FwRPt+1p6TjbriqYO9CPLyQo= - -yargs@^16.1.0: - version "16.2.0" - resolved "https://registry.npm.taobao.org/yargs/download/yargs-16.2.0.tgz?cache=0&sync_timestamp=1617506941953&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha1-HIK/D2tqZur85+8w43b0mhJHf2Y= - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" diff --git a/packages/vant-stylelint-config/package.json b/packages/vant-stylelint-config/package.json index c577e8c86..ce56af576 100644 --- a/packages/vant-stylelint-config/package.json +++ b/packages/vant-stylelint-config/package.json @@ -9,11 +9,11 @@ }, "license": "MIT", "repository": "https://github.com/youzan/vant/tree/dev/packages/vant-stylelint-config", - "peerDependencies": { - "stylelint": "^13.0.0" - }, "dependencies": { "stylelint-config-prettier": "^8.0.1", "stylelint-config-standard": "^20.0.0" + }, + "devDependencies": { + "stylelint": "^13.0.0" } } diff --git a/packages/vant-stylelint-config/yarn.lock b/packages/vant-stylelint-config/yarn.lock deleted file mode 100644 index 178d35a7c..000000000 --- a/packages/vant-stylelint-config/yarn.lock +++ /dev/null @@ -1,20 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -stylelint-config-prettier@^8.0.1: - version "8.0.1" - resolved "https://registry.npm.taobao.org/stylelint-config-prettier/download/stylelint-config-prettier-8.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstylelint-config-prettier%2Fdownload%2Fstylelint-config-prettier-8.0.1.tgz#ec7cdd7faabaff52ebfa56c28fed3d995ebb8cab" - integrity sha1-7Hzdf6q6/1Lr+lbCj+09mV67jKs= - -stylelint-config-recommended@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz#e0e547434016c5539fe2650afd58049a2fd1d657" - integrity sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ== - -stylelint-config-standard@^20.0.0: - version "20.0.0" - resolved "https://registry.npm.taobao.org/stylelint-config-standard/download/stylelint-config-standard-20.0.0.tgz#06135090c9e064befee3d594289f50e295b5e20d" - integrity sha1-BhNQkMngZL7+49WUKJ9Q4pW14g0= - dependencies: - stylelint-config-recommended "^3.0.0" diff --git a/packages/vant/docs/markdown/home.en-US.md b/packages/vant/docs/markdown/home.en-US.md index 7eb6d3f8e..5df31c555 100644 --- a/packages/vant/docs/markdown/home.en-US.md +++ b/packages/vant/docs/markdown/home.en-US.md @@ -1,4 +1,4 @@ -
+

Vant

diff --git a/packages/vant/docs/markdown/home.zh-CN.md b/packages/vant/docs/markdown/home.zh-CN.md index 3a1154e29..de1c5b4c0 100644 --- a/packages/vant/docs/markdown/home.zh-CN.md +++ b/packages/vant/docs/markdown/home.zh-CN.md @@ -1,4 +1,4 @@ -
+

Vant

diff --git a/packages/vant/docs/site/demo-locale.js b/packages/vant/docs/site/demo-locale.js deleted file mode 100644 index fa7855fbe..000000000 --- a/packages/vant/docs/site/demo-locale.js +++ /dev/null @@ -1,79 +0,0 @@ -import Locale from '../../src/locale'; -import enUS from '../../src/locale/lang/en-US'; - -export function initDemoLocale() { - Locale.add({ - 'en-US': enUS, - }); - - // switch lang after routing - if (window.vueRouter) { - window.vueRouter.afterEach((to) => { - const { lang } = to.meta || {}; - - if (lang) { - Locale.use(lang); - } - }); - } - - // add some basic locale messages - Locale.add({ - 'zh-CN': { - add: '增加', - decrease: '减少', - red: '红色', - orange: '橙色', - yellow: '黄色', - purple: '紫色', - tab: '标签', - tag: '标签', - desc: '描述信息', - back: '返回', - title: '标题', - status: '状态', - button: '按钮', - option: '选项', - search: '搜索', - content: '内容', - custom: '自定义', - username: '用户名', - password: '密码', - disabled: '禁用状态', - uneditable: '不可编辑', - basicUsage: '基础用法', - advancedUsage: '高级用法', - loadingStatus: '加载状态', - usernamePlaceholder: '请输入用户名', - passwordPlaceholder: '请输入密码', - }, - 'en-US': { - add: 'Add', - decrease: 'Decrease', - red: 'Red', - orange: 'Orange', - yellow: 'Yellow', - purple: 'Purple', - tab: 'Tab', - tag: 'Tag', - desc: 'Description', - back: 'Back', - title: 'Title', - status: 'Status', - button: 'Button', - option: 'Option', - search: 'Search', - content: 'Content', - custom: 'Custom', - username: 'Username', - password: 'Password', - loadingStatus: 'Loading', - disabled: 'Disabled', - uneditable: 'Uneditable', - basicUsage: 'Basic Usage', - advancedUsage: 'Advanced Usage', - usernamePlaceholder: 'Username', - passwordPlaceholder: 'Password', - }, - }); -} diff --git a/packages/vant/docs/site/entry.js b/packages/vant/docs/site/entry.js deleted file mode 100644 index 4220c3dc6..000000000 --- a/packages/vant/docs/site/entry.js +++ /dev/null @@ -1,11 +0,0 @@ -import { initDemoLocale } from './demo-locale'; -import Lazyload from '../../src/lazyload'; - -initDemoLocale(); - -const { app } = window; -if (app) { - app.use(Lazyload, { - lazyComponent: true, - }); -} diff --git a/packages/vant/docs/site/use-translate.ts b/packages/vant/docs/site/use-translate.ts index 032e1dee2..ec122e425 100644 --- a/packages/vant/docs/site/use-translate.ts +++ b/packages/vant/docs/site/use-translate.ts @@ -1,6 +1,95 @@ import Locale from '../../src/locale'; +import enUS from '../../src/locale/lang/en-US'; import { camelize } from '../../src/utils/format/string'; import { createTranslate } from '../../src/utils/create/translate'; +import type { App } from 'vue'; +import type { Router } from 'vue-router'; + +declare global { + interface Window { + app: App; + vueRouter: Router; + } +} + +export function initDemoLocale() { + Locale.add({ + 'en-US': enUS, + }); + + // switch lang after routing + if (window.vueRouter) { + window.vueRouter.afterEach((to) => { + const { lang } = to.meta || {}; + + if (lang) { + Locale.use(lang as string); + } + }); + } + + // add some basic locale messages + Locale.add({ + 'zh-CN': { + add: '增加', + decrease: '减少', + red: '红色', + orange: '橙色', + yellow: '黄色', + purple: '紫色', + tab: '标签', + tag: '标签', + desc: '描述信息', + back: '返回', + title: '标题', + status: '状态', + button: '按钮', + option: '选项', + search: '搜索', + content: '内容', + custom: '自定义', + username: '用户名', + password: '密码', + disabled: '禁用状态', + uneditable: '不可编辑', + basicUsage: '基础用法', + advancedUsage: '高级用法', + loadingStatus: '加载状态', + usernamePlaceholder: '请输入用户名', + passwordPlaceholder: '请输入密码', + }, + 'en-US': { + add: 'Add', + decrease: 'Decrease', + red: 'Red', + orange: 'Orange', + yellow: 'Yellow', + purple: 'Purple', + tab: 'Tab', + tag: 'Tag', + desc: 'Description', + back: 'Back', + title: 'Title', + status: 'Status', + button: 'Button', + option: 'Option', + search: 'Search', + content: 'Content', + custom: 'Custom', + username: 'Username', + password: 'Password', + loadingStatus: 'Loading', + disabled: 'Disabled', + uneditable: 'Uneditable', + basicUsage: 'Basic Usage', + advancedUsage: 'Advanced Usage', + usernamePlaceholder: 'Username', + passwordPlaceholder: 'Password', + }, + }); +} + +initDemoLocale(); let demoUid = 0; diff --git a/packages/vant/jest.config.js b/packages/vant/jest.config.js index fdc554260..90ea75444 100644 --- a/packages/vant/jest.config.js +++ b/packages/vant/jest.config.js @@ -6,7 +6,4 @@ module.exports = { '!**/test/**', '!**/lang/**', ], - moduleNameMapper: { - '^@demo(.*)$': '/docs/site$1', - }, }; diff --git a/packages/vant/package.json b/packages/vant/package.json index 08a8d5e80..e3f3d8725 100644 --- a/packages/vant/package.json +++ b/packages/vant/package.json @@ -21,16 +21,10 @@ "build": "vant-cli build", "build:site": "vant-cli build-site", "release": "vant-cli release --tag next", - "release:site": "yarn build:site && gh-pages -d site --add --dest v3", + "release:site": "yarn build:site && gh-pages -d site-dist --add --dest v3", "test:watch": "vant-cli test --watch", "test:coverage": "open test/coverage/index.html" }, - "lint-staged": { - "*.md": "prettier --write", - "*.{ts,tsx,js,vue,less}": "prettier --write", - "*.{ts,tsx,js,vue}": "eslint --fix", - "*.{vue,css,less}": "stylelint --fix" - }, "npm": { "tag": "next" }, @@ -59,10 +53,10 @@ "vue": "^3.0.0" }, "devDependencies": { - "@vant/cli": "^4.0.0-beta.1", "@vant/area-data": "^1.1.1", - "@vue/compiler-sfc": "^3.2.6", - "vue": "^3.2.6" + "@vant/cli": "^4.0.0-beta.5", + "@vue/compiler-sfc": "3.2.8", + "vue": "3.2.8" }, "sideEffects": [ "es/**/style/*", diff --git a/packages/vant/src/action-bar/demo/index.vue b/packages/vant/src/action-bar/demo/index.vue index c661d79e7..e500db8ee 100644 --- a/packages/vant/src/action-bar/demo/index.vue +++ b/packages/vant/src/action-bar/demo/index.vue @@ -1,5 +1,8 @@