From c9c5e751ae6215a99174a6e04981d8b424026b92 Mon Sep 17 00:00:00 2001 From: huixisheng Date: Fri, 3 Mar 2017 22:38:40 +0800 Subject: [PATCH] [change] optimize the webapack config [change] rename test to examples --- build/webpack.base.config.js | 60 ++++++++++++++ build/webpack.dev.config.js | 92 ++------------------- build/webpack.dist.dev.config.js | 26 +----- build/webpack.dist.prod.config.js | 28 ++----- {test => examples}/app.vue | 0 {test => examples}/index.html | 0 {test => examples}/main.js | 0 {test => examples}/routers/affix.vue | 0 {test => examples}/routers/alert.vue | 0 {test => examples}/routers/badge.vue | 0 {test => examples}/routers/breadcrumb.vue | 0 {test => examples}/routers/button.vue | 0 {test => examples}/routers/card.vue | 0 {test => examples}/routers/carousel.vue | 0 {test => examples}/routers/cascader.vue | 0 {test => examples}/routers/checkbox.vue | 0 {test => examples}/routers/circle.vue | 0 {test => examples}/routers/collapse.vue | 0 {test => examples}/routers/date.vue | 0 {test => examples}/routers/dropdown.vue | 0 {test => examples}/routers/form.vue | 0 {test => examples}/routers/grid.vue | 0 {test => examples}/routers/input-number.vue | 0 {test => examples}/routers/input.vue | 0 {test => examples}/routers/menu.vue | 0 {test => examples}/routers/message.vue | 0 {test => examples}/routers/more.vue | 0 {test => examples}/routers/notice.vue | 0 {test => examples}/routers/page.vue | 0 {test => examples}/routers/poptip.vue | 0 {test => examples}/routers/progress.vue | 0 {test => examples}/routers/radio.vue | 0 {test => examples}/routers/rate.vue | 0 {test => examples}/routers/select.vue | 0 {test => examples}/routers/slider.vue | 0 {test => examples}/routers/steps.vue | 0 {test => examples}/routers/switch.vue | 0 {test => examples}/routers/table.vue | 0 {test => examples}/routers/tabs.vue | 0 {test => examples}/routers/tag.vue | 0 {test => examples}/routers/timeline.vue | 0 {test => examples}/routers/tooltip.vue | 0 {test => examples}/routers/transfer.vue | 0 {test => examples}/routers/tree.vue | 0 {test => examples}/routers/upload.vue | 0 package.json | 3 +- test | 0 47 files changed, 81 insertions(+), 128 deletions(-) create mode 100644 build/webpack.base.config.js rename {test => examples}/app.vue (100%) rename {test => examples}/index.html (100%) rename {test => examples}/main.js (100%) rename {test => examples}/routers/affix.vue (100%) rename {test => examples}/routers/alert.vue (100%) rename {test => examples}/routers/badge.vue (100%) rename {test => examples}/routers/breadcrumb.vue (100%) rename {test => examples}/routers/button.vue (100%) rename {test => examples}/routers/card.vue (100%) rename {test => examples}/routers/carousel.vue (100%) rename {test => examples}/routers/cascader.vue (100%) rename {test => examples}/routers/checkbox.vue (100%) rename {test => examples}/routers/circle.vue (100%) rename {test => examples}/routers/collapse.vue (100%) rename {test => examples}/routers/date.vue (100%) rename {test => examples}/routers/dropdown.vue (100%) rename {test => examples}/routers/form.vue (100%) rename {test => examples}/routers/grid.vue (100%) rename {test => examples}/routers/input-number.vue (100%) rename {test => examples}/routers/input.vue (100%) rename {test => examples}/routers/menu.vue (100%) rename {test => examples}/routers/message.vue (100%) rename {test => examples}/routers/more.vue (100%) rename {test => examples}/routers/notice.vue (100%) rename {test => examples}/routers/page.vue (100%) rename {test => examples}/routers/poptip.vue (100%) rename {test => examples}/routers/progress.vue (100%) rename {test => examples}/routers/radio.vue (100%) rename {test => examples}/routers/rate.vue (100%) rename {test => examples}/routers/select.vue (100%) rename {test => examples}/routers/slider.vue (100%) rename {test => examples}/routers/steps.vue (100%) rename {test => examples}/routers/switch.vue (100%) rename {test => examples}/routers/table.vue (100%) rename {test => examples}/routers/tabs.vue (100%) rename {test => examples}/routers/tag.vue (100%) rename {test => examples}/routers/timeline.vue (100%) rename {test => examples}/routers/tooltip.vue (100%) rename {test => examples}/routers/transfer.vue (100%) rename {test => examples}/routers/tree.vue (100%) rename {test => examples}/routers/upload.vue (100%) create mode 100644 test diff --git a/build/webpack.base.config.js b/build/webpack.base.config.js new file mode 100644 index 00000000..80fe22c7 --- /dev/null +++ b/build/webpack.base.config.js @@ -0,0 +1,60 @@ +/** + * 公共配置 + */ +var webpack = require('webpack'); + +module.exports = { + // 加载器 + module: { + // https://doc.webpack-china.org/guides/migrating/#module-loaders-module-rules + rules: [ + { + // https://vue-loader.vuejs.org/en/configurations/extract-css.html + test: /\.vue$/, + loader: 'vue-loader', + options: { + loaders: { + css: 'vue-style-loader!css-loader', + less: 'vue-style-loader!css-loader!less-loader' + }, + postLoaders: { + html: 'babel-loader' + } + } + }, + { + test: /\.js$/, + loader: 'babel-loader', exclude: /node_modules/ + }, + { + test: /\.css$/, + use: [ + 'style-loader', + 'css-loader', + 'autoprefixer-loader' + ] + }, + { + test: /\.less$/, + use: [ + 'style-loader', + 'css-loader', + 'less-loader' + ] + }, + { + test: /\.scss$/, + use: [ + 'style-loader', + 'css-loader', + 'sass-loader?sourceMap' + ] + }, + { test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=8192'}, + { test: /\.(html|tpl)$/, loader: 'html-loader' } + ] + }, + resolve: { + extensions: ['.js', '.vue'] + } +}; diff --git a/build/webpack.dev.config.js b/build/webpack.dev.config.js index 6c442115..a587feee 100644 --- a/build/webpack.dev.config.js +++ b/build/webpack.dev.config.js @@ -6,109 +6,35 @@ var path = require('path'); var webpack = require('webpack'); // var ExtractTextPlugin = require('extract-text-webpack-plugin'); var HtmlWebpackPlugin = require('html-webpack-plugin'); +var merge = require('webpack-merge') +var webpackBaseConfig = require('./webpack.base.config.js'); -module.exports = { + +module.exports = merge(webpackBaseConfig, { // 入口 entry: { - main: './test/main', + main: './examples/main', vendors: ['vue', 'vue-router'] }, // 输出 output: { - path: path.join(__dirname, '../test/dist'), + path: path.join(__dirname, '../examples/dist'), publicPath: '', filename: '[name].js', chunkFilename: '[name].chunk.js' }, - // 加载器 - module: { - // https://doc.webpack-china.org/guides/migrating/#module-loaders-module-rules - rules: [ - { - // https://vue-loader.vuejs.org/en/configurations/extract-css.html - test: /\.vue$/, - loader: 'vue-loader', - options: { - loaders: { - css: 'vue-style-loader!css-loader', - less: 'vue-style-loader!css-loader!less-loader' - }, - postLoaders: { - html: 'babel-loader' - } - } - }, - // { test: /\.vue$/, loader: 'vue' }, - // Module build failed: Error: The node API for `babel` has been moved to `babel-core`. - // https://github.com/babel/babel-loader/blob/master/README.md#the-node-api-for-babel-has-been-moved-to-babel-core - { - test: /\.js$/, - loader: 'babel-loader', exclude: /node_modules/ - }, - { - test: /\.css$/, - use: [ - 'style-loader', - 'css-loader', - 'autoprefixer-loader' - ] - }, - { - test: /\.less$/, - use: [ - 'style-loader', - 'css-loader', - 'less-loader' - ] - // loader: 'style!css!less' - }, - { - test: /\.scss$/, - use: [ - 'style-loader', - 'css-loader', - 'sass-loader?sourceMap' - ] - // loader: 'style!css!sass?sourceMap' - }, - { test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=8192'}, - { test: /\.(html|tpl)$/, loader: 'html-loader' } - ] - }, - // vue: { - // loaders: { - // css: ExtractTextPlugin.extract( - // "style-loader", - // "css-loader?sourceMap", - // { - // publicPath: "/test/dist/" - // } - // ), - // less: ExtractTextPlugin.extract( - // 'vue-style-loader', - // 'css-loader!less-loader' - // ), - // js: 'babel' - // } - // }, resolve: { - // require时省略的扩展名,如:require('module') 不需要module.js - extensions: ['.js', '.vue'], alias: { iview: '../../src/index', vue: 'vue/dist/vue.js' } }, plugins: [ - // new ExtractTextPlugin({ filename: '[name].css', disable: false, allChunks: true }), - // new ExtractTextPlugin("[name].css",{ allChunks : true,resolve : ['modules'] }), // 提取CSS - // https://doc.webpack-china.org/plugins/commons-chunk-plugin/ new webpack.optimize.CommonsChunkPlugin({ name: 'vendors', filename: 'vendor.bundle.js' }), new HtmlWebpackPlugin({ inject: true, - filename: path.join(__dirname, '../test/dist/index.html'), - template: path.join(__dirname, '../test/index.html') // 模版文件 + filename: path.join(__dirname, '../examples/dist/index.html'), + template: path.join(__dirname, '../examples/index.html') }) - // new webpack.optimize.CommonsChunkPlugin('vendors', 'vendors.js'), // 提取第三方库 ] -}; +}); diff --git a/build/webpack.dist.dev.config.js b/build/webpack.dist.dev.config.js index 3aac363f..eab3547c 100644 --- a/build/webpack.dist.dev.config.js +++ b/build/webpack.dist.dev.config.js @@ -1,7 +1,9 @@ var path = require('path'); var webpack = require('webpack'); +var merge = require('webpack-merge') +var webpackBaseConfig = require('./webpack.base.config.js'); -module.exports = { +module.exports = merge(webpackBaseConfig, { entry: { main: './src/index.js' }, @@ -21,26 +23,6 @@ module.exports = { amd: 'vue' } }, - resolve: { - extensions: ['.js', '.vue'] - }, - module: { - rules: [ - { - test: /\.vue$/, - loader: 'vue-loader', - options: { - postLoaders: { - html: 'babel-loader' - } - } - }, - { - test: /\.js$/, - loader: 'babel-loader', exclude: /node_modules/ - } - ] - }, plugins: [ new webpack.DefinePlugin({ 'process.env': { @@ -48,4 +30,4 @@ module.exports = { } }) ] -} +}); diff --git a/build/webpack.dist.prod.config.js b/build/webpack.dist.prod.config.js index 81703bb1..34a6a896 100644 --- a/build/webpack.dist.prod.config.js +++ b/build/webpack.dist.prod.config.js @@ -1,7 +1,11 @@ var path = require('path'); var webpack = require('webpack'); +var merge = require('webpack-merge') +var webpackBaseConfig = require('./webpack.base.config.js'); -module.exports = { + + +module.exports = merge(webpackBaseConfig, { entry: { main: './src/index.js' }, @@ -21,26 +25,6 @@ module.exports = { amd: 'vue' } }, - resolve: { - extensions: ['.js', '.vue'] - }, - module: { - rules: [ - { - test: /\.vue$/, - loader: 'vue-loader', - options: { - postLoaders: { - html: 'babel-loader' - } - } - }, - { - test: /\.js$/, - loader: 'babel-loader', exclude: /node_modules/ - } - ] - }, plugins: [ new webpack.DefinePlugin({ 'process.env': { @@ -53,4 +37,4 @@ module.exports = { } }) ] -} +}); diff --git a/test/app.vue b/examples/app.vue similarity index 100% rename from test/app.vue rename to examples/app.vue diff --git a/test/index.html b/examples/index.html similarity index 100% rename from test/index.html rename to examples/index.html diff --git a/test/main.js b/examples/main.js similarity index 100% rename from test/main.js rename to examples/main.js diff --git a/test/routers/affix.vue b/examples/routers/affix.vue similarity index 100% rename from test/routers/affix.vue rename to examples/routers/affix.vue diff --git a/test/routers/alert.vue b/examples/routers/alert.vue similarity index 100% rename from test/routers/alert.vue rename to examples/routers/alert.vue diff --git a/test/routers/badge.vue b/examples/routers/badge.vue similarity index 100% rename from test/routers/badge.vue rename to examples/routers/badge.vue diff --git a/test/routers/breadcrumb.vue b/examples/routers/breadcrumb.vue similarity index 100% rename from test/routers/breadcrumb.vue rename to examples/routers/breadcrumb.vue diff --git a/test/routers/button.vue b/examples/routers/button.vue similarity index 100% rename from test/routers/button.vue rename to examples/routers/button.vue diff --git a/test/routers/card.vue b/examples/routers/card.vue similarity index 100% rename from test/routers/card.vue rename to examples/routers/card.vue diff --git a/test/routers/carousel.vue b/examples/routers/carousel.vue similarity index 100% rename from test/routers/carousel.vue rename to examples/routers/carousel.vue diff --git a/test/routers/cascader.vue b/examples/routers/cascader.vue similarity index 100% rename from test/routers/cascader.vue rename to examples/routers/cascader.vue diff --git a/test/routers/checkbox.vue b/examples/routers/checkbox.vue similarity index 100% rename from test/routers/checkbox.vue rename to examples/routers/checkbox.vue diff --git a/test/routers/circle.vue b/examples/routers/circle.vue similarity index 100% rename from test/routers/circle.vue rename to examples/routers/circle.vue diff --git a/test/routers/collapse.vue b/examples/routers/collapse.vue similarity index 100% rename from test/routers/collapse.vue rename to examples/routers/collapse.vue diff --git a/test/routers/date.vue b/examples/routers/date.vue similarity index 100% rename from test/routers/date.vue rename to examples/routers/date.vue diff --git a/test/routers/dropdown.vue b/examples/routers/dropdown.vue similarity index 100% rename from test/routers/dropdown.vue rename to examples/routers/dropdown.vue diff --git a/test/routers/form.vue b/examples/routers/form.vue similarity index 100% rename from test/routers/form.vue rename to examples/routers/form.vue diff --git a/test/routers/grid.vue b/examples/routers/grid.vue similarity index 100% rename from test/routers/grid.vue rename to examples/routers/grid.vue diff --git a/test/routers/input-number.vue b/examples/routers/input-number.vue similarity index 100% rename from test/routers/input-number.vue rename to examples/routers/input-number.vue diff --git a/test/routers/input.vue b/examples/routers/input.vue similarity index 100% rename from test/routers/input.vue rename to examples/routers/input.vue diff --git a/test/routers/menu.vue b/examples/routers/menu.vue similarity index 100% rename from test/routers/menu.vue rename to examples/routers/menu.vue diff --git a/test/routers/message.vue b/examples/routers/message.vue similarity index 100% rename from test/routers/message.vue rename to examples/routers/message.vue diff --git a/test/routers/more.vue b/examples/routers/more.vue similarity index 100% rename from test/routers/more.vue rename to examples/routers/more.vue diff --git a/test/routers/notice.vue b/examples/routers/notice.vue similarity index 100% rename from test/routers/notice.vue rename to examples/routers/notice.vue diff --git a/test/routers/page.vue b/examples/routers/page.vue similarity index 100% rename from test/routers/page.vue rename to examples/routers/page.vue diff --git a/test/routers/poptip.vue b/examples/routers/poptip.vue similarity index 100% rename from test/routers/poptip.vue rename to examples/routers/poptip.vue diff --git a/test/routers/progress.vue b/examples/routers/progress.vue similarity index 100% rename from test/routers/progress.vue rename to examples/routers/progress.vue diff --git a/test/routers/radio.vue b/examples/routers/radio.vue similarity index 100% rename from test/routers/radio.vue rename to examples/routers/radio.vue diff --git a/test/routers/rate.vue b/examples/routers/rate.vue similarity index 100% rename from test/routers/rate.vue rename to examples/routers/rate.vue diff --git a/test/routers/select.vue b/examples/routers/select.vue similarity index 100% rename from test/routers/select.vue rename to examples/routers/select.vue diff --git a/test/routers/slider.vue b/examples/routers/slider.vue similarity index 100% rename from test/routers/slider.vue rename to examples/routers/slider.vue diff --git a/test/routers/steps.vue b/examples/routers/steps.vue similarity index 100% rename from test/routers/steps.vue rename to examples/routers/steps.vue diff --git a/test/routers/switch.vue b/examples/routers/switch.vue similarity index 100% rename from test/routers/switch.vue rename to examples/routers/switch.vue diff --git a/test/routers/table.vue b/examples/routers/table.vue similarity index 100% rename from test/routers/table.vue rename to examples/routers/table.vue diff --git a/test/routers/tabs.vue b/examples/routers/tabs.vue similarity index 100% rename from test/routers/tabs.vue rename to examples/routers/tabs.vue diff --git a/test/routers/tag.vue b/examples/routers/tag.vue similarity index 100% rename from test/routers/tag.vue rename to examples/routers/tag.vue diff --git a/test/routers/timeline.vue b/examples/routers/timeline.vue similarity index 100% rename from test/routers/timeline.vue rename to examples/routers/timeline.vue diff --git a/test/routers/tooltip.vue b/examples/routers/tooltip.vue similarity index 100% rename from test/routers/tooltip.vue rename to examples/routers/tooltip.vue diff --git a/test/routers/transfer.vue b/examples/routers/transfer.vue similarity index 100% rename from test/routers/transfer.vue rename to examples/routers/transfer.vue diff --git a/test/routers/tree.vue b/examples/routers/tree.vue similarity index 100% rename from test/routers/tree.vue rename to examples/routers/tree.vue diff --git a/test/routers/upload.vue b/examples/routers/upload.vue similarity index 100% rename from test/routers/upload.vue rename to examples/routers/upload.vue diff --git a/package.json b/package.json index 23aa8688..40a54235 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "vue-style-loader": "^1.0.0", "vue-template-compiler": "^2.2.1", "webpack": "^2.2.1", - "webpack-dev-server": "^2.4.1" + "webpack-dev-server": "^2.4.1", + "webpack-merge": "^3.0.0" } } diff --git a/test b/test new file mode 100644 index 00000000..e69de29b