var path = require('path') var config = require('./config') var utils = require('./utils') var projectRoot = path.resolve(__dirname, '../../') var StatsPlugin = require('stats-webpack-plugin')
var env = process.env.NODE_ENV // check env & config/index.js to decide weither to enable CSS Sourcemaps for the // various preprocessor loaders added to vue-loader at the end of this file var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap) var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap) var useCssSourceMap = cssSourceMapDev || cssSourceMapProd
module.exports = {
entry: { application: './webpack/application.js' }, output: { path: config.build.assetsRoot, publicPath: '/webpack/', filename: '[name].js' }, resolve: { extensions: ['', '.js', '.vue'], fallback: [ path.join(projectRoot, 'node_modules'), ], alias: { 'vue$': 'vue/dist/vue.common.js', 'components': path.resolve(projectRoot, 'app/components'), 'assets': path.resolve(projectRoot, 'app/assets') } }, resolveLoader: { fallback: [path.join(projectRoot, 'node_modules')] }, module: { preLoaders: [ { test: /\.vue$/, loader: 'eslint', include: projectRoot, exclude: /node_modules/ }, { test: /\.js$/, loader: 'eslint', include: projectRoot, exclude: /node_modules/ } ], loaders: [ { test: /\.vue$/, loader: 'vue' }, { test: /\.js$/, loader: 'babel', include: projectRoot, exclude: /node_modules/ }, { test: /\.pug$/, loader: 'pug', include: projectRoot, exclude: /node_modules/ }, { test: /\.sass$/, loader: 'sass', include: projectRoot, exclude: /node_modules/ }, { test: /\.json$/, loader: 'json' }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'url', query: { limit: 10000, name: utils.assetsPath('img/[name].[hash:7].[ext]') } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, loader: 'url', query: { limit: 10000, name: utils.assetsPath('fonts/[name].[hash:7].[ext]') } } ] }, eslint: { formatter: require('eslint-friendly-formatter') }, vue: { loaders: utils.cssLoaders({ sourceMap: useCssSourceMap }), postcss: [ require('autoprefixer')({ browsers: ['last 2 versions'] }) ] }, plugins: [ // must match config.webpack.manifest_filename new StatsPlugin('manifest.json', { // We only need assetsByChunkName chunkModules: false, source: false, chunks: false, modules: false, assets: true }), ]
}