micro-app
Version:
(<5kb) [📱iOS] Create Progressive Web App Dynamically.
82 lines (76 loc) • 2.31 kB
JavaScript
;
let path = require('path');
let webpack = require('webpack');
let autoprefixer = require('autoprefixer');
let ExtractTextWebpackPlugin = require('extract-text-webpack-plugin');
const entry = require('./webpack.entry.json');
const packageJson = require('../package.json');
const alias = {};
const imageSize = 10240;
const constant = {
NAME : packageJson.name,
VERSION : packageJson.version,
};
let config = {
devtool : '#source-map',
entry,
output : {
filename : 'js/[name].js',
publicPath : '',
},
extensions : ['.vue', '.js', '.json', '.scss'],
resolve : {
alias,
},
module : {
loaders : [
{
test : /\.vue$/,
loader : 'vue',
},
{
test : /\.(png|jpg|gif|svg)$/,
loader : `url?limit=${ imageSize }&name=../img/[name].[ext]?[hash]`,
},
{
test : /\.css$/,
loader : ExtractTextWebpackPlugin.extract('style', 'css!postcss'),
},
{
test : /\.scss$/,
loader : ExtractTextWebpackPlugin.extract('style', 'css!postcss!sass'),
},
{
test : /\.js$/,
exclude : path.join(__dirname, '../node_modules/'),
loader : 'babel',
query : {
presets : ['es2015', 'stage-0'],
// plugins : ['transform-remove-strict-mode'],
// plugins: ['transform-runtime'],
},
},
],
},
plugins : [
new ExtractTextWebpackPlugin('css/[name].css'),
new webpack.DefinePlugin((() => {
Object.keys(constant).forEach(( key ) => {
constant[key] = JSON.stringify(constant[key]);
});
return {
'process.env' : constant,
};
})()),
],
vue : {
loaders : {
sass : ExtractTextWebpackPlugin.extract('style', 'css!postcss!sass'),
scss : ExtractTextWebpackPlugin.extract('style', 'css!postcss!sass'),
},
},
postcss () {
return [autoprefixer({ browsers : ['last 2 versions'] })];
},
};
module.exports = config;