Merge pull request #3098 from Xotic750/enable_sourcemaps

Enable creation of sourcemaps
This commit is contained in:
Aresn 2018-03-06 09:56:08 +08:00 committed by GitHub
commit a0382e2269
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 187 additions and 109 deletions

View file

@ -3,7 +3,7 @@
*/ */
const path = require('path'); const path = require('path');
const webpack = require('webpack'); const webpack = require('webpack');
const package = require('../package.json'); const pkg = require('../package.json');
function resolve (dir) { function resolve (dir) {
return path.join(__dirname, '..', dir); return path.join(__dirname, '..', dir);
@ -20,44 +20,119 @@ module.exports = {
loader: 'vue-loader', loader: 'vue-loader',
options: { options: {
loaders: { loaders: {
css: 'vue-style-loader!css-loader', css: [
less: 'vue-style-loader!css-loader!less-loader' '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: { postLoaders: {
html: 'babel-loader' html: 'babel-loader?sourceMap'
} },
sourceMap: true,
} }
}, },
{ {
test: /\.js$/, test: /\.js$/,
loader: 'babel-loader', exclude: /node_modules/ loader: 'babel-loader',
options: {
sourceMap: true,
},
exclude: /node_modules/,
}, },
{ {
test: /\.css$/, test: /\.css$/,
use: [ loaders: [
'style-loader', {
'css-loader', loader: 'style-loader',
'autoprefixer-loader' options: {
sourceMap: true,
},
},
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: '\'autoprefixer-loader\'',
},
] ]
}, },
{ {
test: /\.less$/, test: /\.less$/,
use: [ loaders: [
'style-loader', {
'css-loader', loader: 'style-loader',
'less-loader' options: {
sourceMap: true,
},
},
{
loader: 'css-loader',
options: {
sourceMap: true,
},
},
{
loader: 'less-loader',
options: {
sourceMap: true,
},
},
] ]
}, },
{ {
test: /\.scss$/, test: /\.scss$/,
use: [ loaders: [
'style-loader', {
'css-loader', loader: 'style-loader',
'sass-loader?sourceMap' 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' } test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/,
loader: 'url-loader?limit=8192'
},
{
test: /\.(html|tpl)$/,
loader: 'html-loader'
}
] ]
}, },
resolve: { resolve: {
@ -70,7 +145,7 @@ module.exports = {
plugins: [ plugins: [
new webpack.optimize.ModuleConcatenationPlugin(), new webpack.optimize.ModuleConcatenationPlugin(),
new webpack.DefinePlugin({ new webpack.DefinePlugin({
'process.env.VERSION': `'${package.version}'` 'process.env.VERSION': `'${pkg.version}'`
}), }),
] ]
}; };

View file

@ -12,6 +12,8 @@ const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');
module.exports = merge(webpackBaseConfig, { module.exports = merge(webpackBaseConfig, {
devtool: 'eval-source-map',
// 入口 // 入口
entry: { entry: {
main: './examples/main', main: './examples/main',

View file

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

View file

@ -4,6 +4,7 @@ const entry = require('./locale');
process.env.NODE_ENV = 'production'; process.env.NODE_ENV = 'production';
module.exports = { module.exports = {
devtool: 'source-map',
entry, entry,
module: { module: {
rules: [ rules: [
@ -37,9 +38,8 @@ module.exports = {
} }
}), }),
new webpack.optimize.UglifyJsPlugin({ new webpack.optimize.UglifyJsPlugin({
compress: { parallel: true,
warnings: false sourceMap: true,
}
}) })
] ]
}; };

View file

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

View file

@ -8,8 +8,7 @@ const webpackBaseConfig = require('./webpack.base.config.js');
const webpackConfig = merge(webpackBaseConfig, { const webpackConfig = merge(webpackBaseConfig, {
// use inline sourcemap for karma-sourcemap-loader devtool: 'eval-source-map',
devtool: '#inline-source-map',
plugins: [ plugins: [
new webpack.DefinePlugin({ new webpack.DefinePlugin({
'process.env': { 'process.env': {