Skip to content

Instantly share code, notes, and snippets.

@jarkin13
Last active June 10, 2019 04:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jarkin13/2ad87c57d83f898ee9892212670ef37c to your computer and use it in GitHub Desktop.
Save jarkin13/2ad87c57d83f898ee9892212670ef37c to your computer and use it in GitHub Desktop.
Webpack config
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const path = require('path')
const merge = require('webpack-merge')
const server = require('./webpack/tasks/server')
const styles = require('./webpack/tasks/styles')
const assets = require('./webpack/tasks/assets')
const CONFIG = require('./webpack/config')
const taskOptions = CONFIG.getConfigKeys()
const common = merge([
{
entry: {
main: path.join(__dirname, CONFIG.src),
},
output: {
filename: '[name].js',
path: path.join(__dirname, CONFIG.output),
},
plugins: [new CleanWebpackPlugin()],
},
styles.load({
output: CONFIG.styles,
}),
])
const minify = merge([
styles.minify,
assets.minify,
])
const tasks = merge([
assets.imagesmin({
options: [
{
from: `./${CONFIG.src}/${taskOptions.images.path}`,
to: taskOptions.images.path,
},
],
env: taskOptions.environment,
}),
assets.fontsmin({
options: [
{
from: `./${CONFIG.src}/${CONFIG.fonts}`,
to: CONFIG.fonts,
},
],
env: taskOptions.environment,
}),
assets.fonts(),
assets.images({
options: taskOptions.images.options,
}),
assets.svg({
options: taskOptions.images.options,
}),
])
module.exports = mode => {
if (mode === 'production') {
return merge(minify, tasks, common, { mode })
}
return merge(common, server.dev, tasks, { mode })
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment