diff --git a/build/build-lib.js b/build/build-lib.js index 2edcc4a0c93..f226ff7023e 100644 --- a/build/build-lib.js +++ b/build/build-lib.js @@ -12,8 +12,8 @@ const tasks = [ 'node build/build-components.js --color', 'node build/build-style.js', 'node build/build-style-entry.js', - 'cross-env NODE_ENV=production webpack --color --config build/webpack.build.js', - 'cross-env NODE_ENV=production webpack -p --color --config build/webpack.build.js' + 'cross-env NODE_ENV=production webpack --color --config build/webpack.config.js', + 'cross-env NODE_ENV=production webpack -p --color --config build/webpack.config.js' ]; tasks.forEach(task => { diff --git a/build/webpack.build.js b/build/webpack.config.js similarity index 70% rename from build/webpack.build.js rename to build/webpack.config.js index 37ebd8c169c..2a094159dca 100644 --- a/build/webpack.build.js +++ b/build/webpack.config.js @@ -1,11 +1,8 @@ const path = require('path'); -const config = require('./webpack.dev.js'); const isMinify = process.argv.indexOf('-p') !== -1; -delete config.serve; - -module.exports = Object.assign(config, { +module.exports = { mode: 'production', entry: { vant: './es/index.js' @@ -26,8 +23,19 @@ module.exports = Object.assign(config, { amd: 'vue' } }, - performance: false, optimization: { minimize: isMinify + }, + resolve: { + extensions: ['.js', '.ts', '.tsx'] + }, + module: { + rules: [ + { + test: /\.(js|ts|tsx)$/, + exclude: /node_modules/, + use: 'babel-loader' + } + ] } -}); +}; diff --git a/build/webpack.dev.js b/build/webpack.dev.js deleted file mode 100644 index 7ac1b4d3c40..00000000000 --- a/build/webpack.dev.js +++ /dev/null @@ -1,91 +0,0 @@ -const path = require('path'); -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const ProgressBarPlugin = require('progress-bar-webpack-plugin'); -const { VueLoaderPlugin } = require('vue-loader'); - -module.exports = { - mode: 'development', - entry: { - 'vant-docs': './docs/site/index.js', - 'vant-mobile': './docs/site/mobile.js' - }, - output: { - path: path.join(__dirname, '../docs/dist'), - publicPath: '/', - chunkFilename: 'async_[name].js' - }, - stats: { - modules: false, - children: false - }, - devServer: { - open: true, - host: '0.0.0.0', - stats: 'errors-only', - clientLogLevel: 'warning' - }, - resolve: { - extensions: ['.js', '.ts', '.tsx', '.vue', '.css'] - }, - module: { - rules: [ - { - test: /\.vue$/, - use: [ - { - loader: 'vue-loader', - options: { - compilerOptions: { - preserveWhitespace: false - } - } - } - ] - }, - { - test: /\.(js|ts|tsx)$/, - exclude: /node_modules/, - use: 'babel-loader' - }, - { - test: /\.less$/, - sideEffects: true, - use: [ - 'style-loader', - 'css-loader', - 'postcss-loader', - { - loader: 'less-loader', - options: { - paths: [path.resolve(__dirname, 'node_modules')] - } - } - ] - }, - { - test: /\.md$/, - use: ['vue-loader', '@vant/markdown-loader'] - }, - { - test: /\.(ttf|svg)$/, - loader: 'url-loader' - } - ] - }, - plugins: [ - new VueLoaderPlugin(), - new ProgressBarPlugin(), - new HtmlWebpackPlugin({ - chunks: ['vant-docs'], - template: 'docs/site/index.tpl', - filename: 'index.html', - inject: true - }), - new HtmlWebpackPlugin({ - chunks: ['vant-mobile'], - template: 'docs/site/index.tpl', - filename: 'mobile.html', - inject: true - }) - ] -}; diff --git a/build/webpack.doc.js b/build/webpack.doc.js deleted file mode 100644 index 3146723c2a0..00000000000 --- a/build/webpack.doc.js +++ /dev/null @@ -1,14 +0,0 @@ -const path = require('path'); -const config = require('./webpack.dev.js'); - -delete config.serve; - -module.exports = Object.assign(config, { - mode: 'production', - output: { - path: path.join(__dirname, '../docs/dist'), - publicPath: 'https://youzan.github.io/vant/', - filename: '[name].[hash:8].js', - chunkFilename: 'async_[name].[chunkhash:8].js' - } -}); diff --git a/docs/site/DocsApp.vue b/docs/site/DocsApp.vue deleted file mode 100644 index 01f6588f97c..00000000000 --- a/docs/site/DocsApp.vue +++ /dev/null @@ -1,166 +0,0 @@ - - - - - diff --git a/docs/site/index.tpl b/docs/site/index.tpl deleted file mode 100644 index 1a4bd73b428..00000000000 --- a/docs/site/index.tpl +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - Vant - 轻量、可靠的移动端 Vue 组件库 - - - - -
- - - diff --git a/package.json b/package.json index 1ae68c31da2..43871597f33 100644 --- a/package.json +++ b/package.json @@ -14,12 +14,12 @@ ], "scripts": { "bootstrap": "yarn || npm i", - "dev": "npm run build:entry && webpack-dev-server --config build/webpack.dev.js", + "dev": "npm run build:entry && cd site && yarn serve", "lint": "eslint ./src --ext .js,.vue,.ts,.tsx && stylelint \"src/**/*.less\" --fix", "build:entry": "node build/build-entry.js", "build:changelog": "vant-doc changelog ./docs/markdown/changelog.generated.md --tag 2.0.0", "build:lib": "node build/build-lib.js", - "build:site": "rm -rf docs/dist && cross-env NODE_ENV=production webpack --config build/webpack.doc.js && gh-pages -d docs/dist --add", + "build:site": "rm -rf site/dist && cd site && npm run build && gh-pages -d dist --add", "test": "jest", "test:watch": "jest --watch", "test:clear-cache": "jest --clearCache", @@ -89,7 +89,6 @@ "eslint": "^6.0.1", "fast-glob": "^3.0.3", "gh-pages": "^2.0.1", - "html-webpack-plugin": "3.2.0", "husky": "^3.0.0", "jest": "^24.8.0", "jest-serializer-vue": "^2.0.2", @@ -98,7 +97,6 @@ "lint-staged": "^9.0.0", "postcss": "^7.0.17", "postcss-loader": "^3.0.0", - "progress-bar-webpack-plugin": "^1.12.1", "shelljs": "^0.8.3", "signale": "^1.4.0", "style-loader": "^0.23.1", @@ -118,8 +116,7 @@ "vue-template-compiler": "2.6.10", "vue-template-es2015-compiler": "^1.9.1", "webpack": "4.35.2", - "webpack-cli": "^3.3.5", - "webpack-dev-server": "3.7.2" + "webpack-cli": "^3.3.5" }, "sideEffects": [ "es/**/style/*", diff --git a/site/babel.config.js b/site/babel.config.js new file mode 100644 index 00000000000..3490e08caa5 --- /dev/null +++ b/site/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['@vue/app'] +}; diff --git a/site/package.json b/site/package.json new file mode 100644 index 00000000000..859c10874bc --- /dev/null +++ b/site/package.json @@ -0,0 +1,26 @@ +{ + "name": "@vant/site", + "version": "1.0.0", + "scripts": { + "serve": "vue-cli-service serve", + "build": "yarn && vue-cli-service build" + }, + "dependencies": { + "core-js": "^2.6.5", + "register-service-worker": "^1.6.2" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^3.1.1", + "@vue/cli-plugin-typescript": "^3.8.1", + "@vue/cli-service": "^3.1.4" + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] +} diff --git a/site/public/index.html b/site/public/index.html new file mode 100644 index 00000000000..96f77412ba9 --- /dev/null +++ b/site/public/index.html @@ -0,0 +1,14 @@ + + + + + + + + Vant - 轻量、可靠的移动端 Vue 组件库 + + +
+ + + diff --git a/docs/site/components/DemoList.vue b/site/src/components/DemoList.vue similarity index 100% rename from docs/site/components/DemoList.vue rename to site/src/components/DemoList.vue diff --git a/docs/site/components/DemoPages.vue b/site/src/components/DemoPages.vue similarity index 100% rename from docs/site/components/DemoPages.vue rename to site/src/components/DemoPages.vue diff --git a/docs/site/components/MobileNav.vue b/site/src/components/MobileNav.vue similarity index 100% rename from docs/site/components/MobileNav.vue rename to site/src/components/MobileNav.vue diff --git a/site/src/desktop/App.vue b/site/src/desktop/App.vue new file mode 100644 index 00000000000..b03512f0422 --- /dev/null +++ b/site/src/desktop/App.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/docs/site/index.js b/site/src/desktop/main.js similarity index 67% rename from docs/site/index.js rename to site/src/desktop/main.js index 5a6f94c29a6..58487dd62f5 100644 --- a/docs/site/index.js +++ b/site/src/desktop/main.js @@ -1,9 +1,10 @@ import Vue from 'vue'; import VueRouter from 'vue-router'; import VantDoc from '@vant/doc'; -import App from './DocsApp'; -import routes from './router'; -import { isMobile, importAll } from './utils'; +import routes from '../router'; +import App from './App'; +import { isMobile, importAll } from '../utils'; +import '../sw'; if (isMobile) { location.replace('mobile.html' + location.hash); @@ -12,8 +13,8 @@ if (isMobile) { Vue.use(VueRouter).use(VantDoc); const docs = {}; -const docsFromMarkdown = require.context('../markdown', false, /(en-US|zh-CN)\.md$/); -const docsFromPackages = require.context('../../src', true, /README(\.zh-CN)?\.md$/); +const docsFromMarkdown = require.context('../../../docs/markdown', false, /(en-US|zh-CN)\.md$/); +const docsFromPackages = require.context('../../../src', true, /README(\.zh-CN)?\.md$/); importAll(docs, docsFromMarkdown); importAll(docs, docsFromPackages); diff --git a/docs/site/doc.config.js b/site/src/doc.config.js similarity index 100% rename from docs/site/doc.config.js rename to site/src/doc.config.js diff --git a/docs/site/WapApp.vue b/site/src/mobile/App.vue similarity index 97% rename from docs/site/WapApp.vue rename to site/src/mobile/App.vue index f306ad34d75..decd7229c8d 100644 --- a/docs/site/WapApp.vue +++ b/site/src/mobile/App.vue @@ -50,7 +50,7 @@ export default {