Files
vue-chartjs/build/webpack.release.js
2018-02-09 16:49:11 +01:00

95 lines
2.1 KiB
JavaScript

var path = require('path')
var webpack = require('webpack')
var ExtractTextPlugin = require('extract-text-webpack-plugin')
var cssLoader = ExtractTextPlugin.extract('style-loader', 'css-loader')
const npmCfg = require('../package.json')
const vueLoaderConfig = require('./vue-loader.conf')
var banner = [
npmCfg.name + ' v' + npmCfg.version,
'(c) ' + (new Date().getFullYear()) + ' ' + npmCfg.author,
npmCfg.homepage
].join('\n')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
entry: {
'vue-chartjs': './src/index.js'
},
devtool: 'source-map',
output: {
filename: './dist/[name].js',
library: 'VueChartJs',
libraryTarget: 'umd',
umdNamedDefine: true
},
externals: {
'chart.js': {
root: 'Chart',
commonjs: 'chart.js',
commonjs2: 'chart.js',
amd: 'chart.js'
}
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src')
}
},
module: {
rules: [
{
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter')
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')]
},
{
test: /\.css$/,
loader: cssLoader
},
{
test: /\.s[a|c]ss$/,
loader: ExtractTextPlugin.extract('style-loader', 'css-loader!sass-loader')
},
{
test: /\.json$/,
loader: 'json-loader'
}
]
},
plugins: [
new webpack.BannerPlugin(banner),
new webpack.optimize.ModuleConcatenationPlugin()
]
}
if (process.env.NODE_ENV === 'production') {
// delete module.exports.devtool
module.exports.plugins = [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
})
]
}