webpack.config.js
unknown
javascript
a year ago
3.1 kB
16
Indexable
const path = require('path');
const Dotenv = require('dotenv-webpack');
const { VueLoaderPlugin } = require('vue-loader');
const TerserPlugin = require('terser-webpack-plugin');
var entries = require('./webpack-entries');
for (let index in entries) {
entries[index] = './vue/apps/' + entries[index];
}
module.exports = function (env = {}) {
const mode = env.local ? "development" : "production";
const envBuildConfig = new Dotenv(getEnvironmentConfig(env));
return {
mode: mode,
entry: entries,
output: {
path: path.resolve(__dirname, '../aodclib/js/vue/'),
publicPath: '../aodclib/js/vue/',
filename: '[name].js',
chunkFilename: mode === 'development' ? '[id].[chunkhash].dev-chunk.js' : '[id].[name].[hash].[chunkhash].chunk.js'
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
options: {
presets: ['@babel/preset-env'],
plugins: ["@babel/plugin-transform-runtime"]
}
},
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
{
test: /\.(png|woff|woff2|eot|ttf|svg)$/,
use: ['file-loader']
},
{
test: /\.s(c|a)ss$/,
use: [
'style-loader',
'css-loader',
{
loader: 'sass-loader',
options: {
sassOptions: {
indentedSyntax: false
},
},
},
],
},
]
},
plugins: [
new VueLoaderPlugin(),
envBuildConfig
],
optimization: {
minimize: true,
minimizer: [new TerserPlugin({
terserOptions: {
compress: { drop_console: true },
}
})],
},
devtool: mode === 'development' ? 'eval-source-map' : false,
resolve: {
extensions: ['.js', '.vue', '.json'],
modules: ['node_modules'],
alias: {
'vue$': 'vue/dist/vue.esm-bundler.js',
'@': path.resolve(__dirname, 'apps/')
}
},
devServer: {
host: 'local.aodoubleclick.com',
port: 4000,
hot: true,
devMiddleware: {
writeToDisk: true,
},
static: {
directory: path.join(__dirname, '../aodclib/js/vue/')
}
}
};
};
function getEnvironmentConfig(env) {
let config = {
path: './vue/environments/.env', // default environment file
systemvars: true,
silent: false,
};
if (env.local) {
config.path = './vue/environments/.env';
} else if (env.dev) {
config.path = './vue/environments/.dev.env';
} else if (env.release) {
config.path = './vue/environments/.stg.env';
} else if (env.production) {
config.path = './vue/environments/.prod.env';
}
return config;
}Editor is loading...
Leave a Comment