112 lines
2.2 KiB
JavaScript
112 lines
2.2 KiB
JavaScript
import cssnano from 'cssnano'
|
|
import ExtractTextPlugin from 'extract-text-webpack-plugin'
|
|
import config from '../../config'
|
|
|
|
const isProduction = config.env === 'production'
|
|
|
|
// ------------------------------------
|
|
// Pre-Loaders
|
|
// ------------------------------------
|
|
export let preLoaders = [
|
|
{
|
|
test: /\.js$/,
|
|
loader: 'eslint',
|
|
exclude: /node_modules/
|
|
}
|
|
]
|
|
|
|
export let eslint = {
|
|
configFile: `${config.path_base}/.eslintrc`,
|
|
emitWarning: !isProduction
|
|
}
|
|
|
|
// ------------------------------------
|
|
// Loaders
|
|
// ------------------------------------
|
|
let sassLoaders = isProduction
|
|
? ExtractTextPlugin.extract(
|
|
'style-loader',
|
|
'css-loader!postcss-loader!sass-loader'
|
|
)
|
|
: 'style-loader!css-loader!postcss-loader!sass-loader'
|
|
|
|
let cssLoaders = isProduction
|
|
? ExtractTextPlugin.extract('style-loader', 'css-loader')
|
|
: 'style-loader!css-loader'
|
|
|
|
export let loaders = [
|
|
// ES-2015
|
|
{
|
|
test: /\.js$/,
|
|
exclude: /node_modules/,
|
|
loader: 'babel',
|
|
compact: false,
|
|
query: {
|
|
cacheDirectory: true,
|
|
plugins: ['transform-runtime'],
|
|
presets: !isProduction
|
|
? ['es2015', 'react', 'stage-0', 'react-hmre']
|
|
: ['es2015', 'react', 'stage-0']
|
|
}
|
|
},
|
|
// Styles
|
|
{
|
|
test: /\.scss$/,
|
|
include: /app/,
|
|
loader: sassLoaders
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
exclude: /app/,
|
|
loader: cssLoaders
|
|
},
|
|
// Fonts
|
|
{
|
|
test: /\.woff(\?.*)?$/,
|
|
loader: 'file?prefix=fonts/&name=[path][name].[ext]'
|
|
},
|
|
{
|
|
test: /\.woff2(\?.*)?$/,
|
|
loader: 'file?prefix=fonts/&name=[path][name].[ext]'
|
|
},
|
|
{
|
|
test: /\.ttf(\?.*)?$/,
|
|
loader: 'file?prefix=fonts/&name=[path][name].[ext]'
|
|
},
|
|
{
|
|
test: /\.eot(\?.*)?$/,
|
|
loader: 'file?prefix=fonts/&name=[path][name].[ext]'
|
|
},
|
|
{
|
|
test: /\.svg(\?.*)?$/,
|
|
loader: 'file?prefix=fonts/&name=[path][name].[ext]'
|
|
},
|
|
// Images
|
|
{ test: /\.(png|jpg|gif)$/, loader: 'url' },
|
|
|
|
//json
|
|
{
|
|
test: /\.json$/,
|
|
loader: 'json-loader'
|
|
}
|
|
]
|
|
|
|
export let postcss = [
|
|
cssnano({
|
|
sourcemap: true,
|
|
autoprefixer: {
|
|
add: true,
|
|
remove: true,
|
|
browsers: ['last 2 versions']
|
|
},
|
|
safe: true,
|
|
discardComments: {
|
|
removeAll: true
|
|
}
|
|
})
|
|
]
|
|
|
|
export let sassLoader = {
|
|
includePaths: `${config.path_client}/styles`
|
|
}
|