update the master branch to the latest

This commit is contained in:
梁灏 2019-08-27 09:42:40 +08:00
parent 67d534df27
commit 23a0ba9831
611 changed files with 122648 additions and 0 deletions

8
build/.eslintrc.json Normal file
View file

@ -0,0 +1,8 @@
{
"extends": [
"../.eslintrc.json"
],
"env": {
"node": true
}
}

25
build/build-style.js Normal file
View file

@ -0,0 +1,25 @@
const gulp = require('gulp');
const cleanCSS = require('gulp-clean-css');
const less = require('gulp-less');
const rename = require('gulp-rename');
const autoprefixer = require('gulp-autoprefixer');
// 编译less
gulp.task('css', function () {
gulp.src('../src/styles/index.less')
.pipe(less())
.pipe(autoprefixer({
browsers: ['last 2 versions', 'ie > 8']
}))
.pipe(cleanCSS())
.pipe(rename('iview.css'))
.pipe(gulp.dest('../dist/styles'));
});
// 拷贝字体文件
gulp.task('fonts', function () {
gulp.src('../src/styles/common/iconfont/fonts/*.*')
.pipe(gulp.dest('../dist/styles/fonts'));
});
gulp.task('default', ['css', 'fonts']);

8
build/locale.js Normal file
View file

@ -0,0 +1,8 @@
const readDir = require('fs').readdirSync;
const files = readDir('./src/locale/lang');
const entry = {};
files.forEach(file => {
const name = file.split('.')[0];
entry[name] = './src/locale/lang/' + file;
});
module.exports = entry;

View file

@ -0,0 +1,151 @@
/**
* 公共配置
*/
const path = require('path');
const webpack = require('webpack');
const pkg = require('../package.json');
function resolve (dir) {
return path.join(__dirname, '..', dir);
}
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',
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
],
less: [
'vue-style-loader',
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: 'less-loader',
options: {
sourceMap: true,
},
},
],
},
postLoaders: {
html: 'babel-loader?sourceMap'
},
sourceMap: true,
}
},
{
test: /\.js$/,
loader: 'babel-loader',
options: {
sourceMap: true,
},
exclude: /node_modules/,
},
{
test: /\.css$/,
loaders: [
{
loader: 'style-loader',
options: {
sourceMap: true,
},
},
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: '\'autoprefixer-loader\'',
},
]
},
{
test: /\.less$/,
loaders: [
{
loader: 'style-loader',
options: {
sourceMap: true,
},
},
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: 'less-loader',
options: {
sourceMap: true,
},
},
]
},
{
test: /\.scss$/,
loaders: [
{
loader: 'style-loader',
options: {
sourceMap: true,
},
},
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true,
},
},
]
},
{
test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/,
loader: 'url-loader?limit=8192'
},
{
test: /\.(html|tpl)$/,
loader: 'html-loader'
}
]
},
resolve: {
extensions: ['.js', '.vue'],
alias: {
'vue': 'vue/dist/vue.esm.js',
'@': resolve('src')
}
},
plugins: [
new webpack.optimize.ModuleConcatenationPlugin(),
new webpack.DefinePlugin({
'process.env.VERSION': `'${pkg.version}'`
}),
]
};

View file

@ -0,0 +1,45 @@
/**
* 本地预览
*/
const path = require('path');
const webpack = require('webpack');
// const ExtractTextPlugin = require('extract-text-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.config.js');
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
module.exports = merge(webpackBaseConfig, {
devtool: 'eval-source-map',
// 入口
entry: {
main: './examples/main',
vendors: ['vue', 'vue-router']
},
// 输出
output: {
path: path.join(__dirname, '../examples/dist'),
publicPath: '',
filename: '[name].js',
chunkFilename: '[name].chunk.js'
},
resolve: {
alias: {
iview: '../../src/index',
vue: 'vue/dist/vue.esm.js'
// vue: 'vue/dist/vue.runtime.js'
}
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({ name: 'vendors', filename: 'vendor.bundle.js' }),
new HtmlWebpackPlugin({
inject: true,
filename: path.join(__dirname, '../examples/dist/index.html'),
template: path.join(__dirname, '../examples/index.html')
}),
new FriendlyErrorsPlugin()
]
});

View file

@ -0,0 +1,38 @@
const path = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.config.js');
process.env.NODE_ENV = 'production';
module.exports = merge(webpackBaseConfig, {
devtool: 'source-map',
entry: {
main: './src/index.js'
},
output: {
path: path.resolve(__dirname, '../dist'),
publicPath: '/dist/',
filename: 'iview.js',
library: 'iview',
libraryTarget: 'umd',
umdNamedDefine: true
},
externals: {
vue: {
root: 'Vue',
commonjs: 'vue',
commonjs2: 'vue',
amd: 'vue'
}
},
plugins: [
// @todo
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
})
]
});

View file

@ -0,0 +1,50 @@
const path = require('path');
const webpack = require('webpack');
const entry = require('./locale');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
process.env.NODE_ENV = 'production';
module.exports = {
devtool: 'source-map',
entry,
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
options: {
sourceMap: true,
},
exclude: /node_modules/
}
]
},
output: {
path: path.resolve(__dirname, '../dist/locale'),
publicPath: '/dist/locale/',
filename: '[name].js',
library: 'iview/locale',
libraryTarget: 'umd',
umdNamedDefine: true
},
externals: {
vue: {
root: 'Vue',
commonjs: 'vue',
commonjs2: 'vue',
amd: 'vue'
}
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),
new UglifyJsPlugin({
parallel: true,
sourceMap: true,
})
]
};

View file

@ -0,0 +1,48 @@
const path = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.config.js');
const CompressionPlugin = require('compression-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
process.env.NODE_ENV = 'production';
module.exports = merge(webpackBaseConfig, {
devtool: 'source-map',
entry: {
main: './src/index.js'
},
output: {
path: path.resolve(__dirname, '../dist'),
publicPath: '/dist/',
filename: 'iview.min.js',
library: 'iview',
libraryTarget: 'umd',
umdNamedDefine: true
},
externals: {
vue: {
root: 'Vue',
commonjs: 'vue',
commonjs2: 'vue',
amd: 'vue'
}
},
plugins: [
// @todo
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"'
}),
new UglifyJsPlugin({
parallel: true,
sourceMap: true
}),
new CompressionPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: /\.(js|css)$/,
threshold: 10240,
minRatio: 0.8
})
]
});

View file

@ -0,0 +1,24 @@
/**
* 用于单元测试
*/
const webpack = require('webpack');
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.config.js');
const webpackConfig = merge(webpackBaseConfig, {
devtool: 'eval-source-map',
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"testing"'
}
})
]
});
// no need for app entry during tests
delete webpackConfig.entry;
module.exports = webpackConfig;