依赖更新 && 构建调整 (#60)

* upgrade dependencies

* 更改所有 saladcss 写法

* fix: 升级依赖导致的样式错误

* fix: build vant css

* use es module when pack && webpack scope hoisting

* fix: vue module version

* delete unused npm script

* fix: build:vant script not work

* fix: webpack config format

* fix: build minify vant.js

* fix: captain ui relative link
This commit is contained in:
neverland
2017-07-28 11:02:33 +08:00
committed by Yao
parent 31bc31af81
commit 50983ca28e
68 changed files with 3678 additions and 3149 deletions
+55 -79
View File
@@ -1,44 +1,20 @@
var webpack = require('webpack');
var path = require('path');
var slugify = require('transliteration').slugify;
var striptags = require('./strip-tags');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var getPostcssPlugin = require('./utils/postcss_pipe');
var ProgressBarPlugin = require('progress-bar-webpack-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
const webpack = require('webpack');
const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const ProgressBarPlugin = require('progress-bar-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
const isProduction = process.env.NODE_ENV === 'production';
const watchExample = require('./genExamples');
if (!isProduction) {
watchExample();
}
var StyleExtractPlugin;
if (process.env.NODE_ENV === 'production') {
StyleExtractPlugin = new ExtractTextPlugin('[name].[hash:8].css');
} else {
StyleExtractPlugin = new ExtractTextPlugin('[name].css');
}
function convert(str) {
str = str.replace(/(&#x)(\w{4});/gi, function($0) {
return String.fromCharCode(parseInt(encodeURIComponent($0).replace(/(%26%23x)(\w{4})(%3B)/g, '$2'), 16));
});
return str;
}
function wrap(render) {
return function() {
return render.apply(this, arguments)
.replace(/\<code v-pre class=\"/, '<code v-pre class="hljs ');
};
};
const styleLoaders = [
{ loader: 'css-loader' },
{ loader: 'postcss-loader', options: { sourceMap: true } }
];
require('./genExamples')(isProduction);
module.exports = {
entry: {
'vendor': ['vue', 'vue-router', 'zan-doc'],
vendor: ['vue', 'vue-router', 'zan-doc'],
'vant-docs': './docs/src/index.js',
'vant-examples': './docs/src/examples.js'
},
@@ -54,37 +30,41 @@ module.exports = {
{ from: /^\/zanui\/vue\/examples/, to: '/examples.html' },
{ from: /^\/zanui\/vue/, to: '/index.html' }
]
}
},
stats: 'errors-only'
},
resolve: {
modules: [
path.join(__dirname, '../node_modules'),
'node_modules'
],
modules: [path.join(__dirname, '../node_modules'), 'node_modules'],
extensions: ['.js', '.vue', '.css'],
alias: {
'vue$': 'vue/dist/vue.runtime.common.js',
'src': path.join(__dirname, '../src'),
'packages': path.join(__dirname, '../packages'),
'lib': path.join(__dirname, '../lib'),
'components': path.join(__dirname, '../docs/src/components')
vue$: 'vue/dist/vue.esm.js',
src: path.join(__dirname, '../src'),
packages: path.join(__dirname, '../packages'),
lib: path.join(__dirname, '../lib'),
components: path.join(__dirname, '../docs/src/components')
}
},
module: {
loaders: [
{
test: /\.vue$/,
use: [{
loader: 'vue-loader',
options: {
loaders: {
css: ExtractTextPlugin.extract({
use: 'css-loader!postcss-loader',
fallback: 'vue-style-loader'
})
use: [
{
loader: 'vue-loader',
options: {
loaders: {
postcss: ExtractTextPlugin.extract({
use: styleLoaders,
fallback: 'vue-style-loader'
}),
css: ExtractTextPlugin.extract({
use: styleLoaders,
fallback: 'vue-style-loader'
})
}
}
}
}]
]
},
{
test: /\.js$/,
@@ -93,9 +73,7 @@ module.exports = {
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
use: 'css-loader!postcss-loader'
})
use: ExtractTextPlugin.extract({ use: styleLoaders })
},
{
test: /\.md/,
@@ -113,34 +91,29 @@ module.exports = {
new webpack.LoaderOptionsPlugin({
minimize: true,
options: {
postcss: getPostcssPlugin,
babel: {
presets: ['es2015'],
plugins: ['transform-runtime', 'transform-vue-jsx']
},
vue: {
autoprefixer: false,
postcss: getPostcssPlugin
autoprefixer: false
},
vueMarkdown: {
use: [
[require('markdown-it-container'), 'demo', {
validate: function(params) {
return params.trim().match(/^demo\s*(.*)$/);
},
[
require('markdown-it-container'),
'demo',
{
validate: function(params) {
return params.trim().match(/^demo\s*(.*)$/);
},
render: function(tokens, idx) {
if (tokens[idx].nesting === 1) {
return `<demo-block class="demo-box"><div class="highlight" slot="highlight">`;
render: function(tokens, idx) {
return tokens[idx].nesting === 1
? `<demo-block class="demo-box"><div class="highlight" slot="highlight"å>`
:`</div></demo-block>\n`;
}
return `</div></demo-block>\n`;
}
}]
]
],
preprocess: function(MarkdownIt, source) {
MarkdownIt.renderer.rules.table_open = function() {
return '<table class="zan-doc-table">';
};
MarkdownIt.renderer.rules.table_open = () => '<table class="zan-doc-table">';
return source;
}
}
@@ -160,7 +133,10 @@ module.exports = {
}),
new webpack.HotModuleReplacementPlugin(),
new OptimizeCssAssetsPlugin(),
StyleExtractPlugin,
new ExtractTextPlugin({
filename: isProduction ? '[name].[hash:8].css' : '[name].css',
allChunks: true
}),
new FriendlyErrorsPlugin()
]
};