// ------------------
|
|
// @Table of Contents
|
|
// ------------------
|
|
|
|
/**
|
|
* + @Loading Dependencies
|
|
* + @Common Loaders
|
|
* + @Exporting Module
|
|
*/
|
|
|
|
|
|
// ---------------------
|
|
// @Loading Dependencies
|
|
// ---------------------
|
|
|
|
const
|
|
manifest = require('../manifest'),
|
|
path = require('path'),
|
|
cssNext = require('postcss-preset-env'),
|
|
ExtractTextPlugin = require('mini-css-extract-plugin');
|
|
|
|
// ---------------
|
|
// @Common Loaders
|
|
// ---------------
|
|
|
|
const loaders = [
|
|
{
|
|
loader: 'css-loader',
|
|
options: {
|
|
sourceMap : manifest.IS_DEVELOPMENT,
|
|
},
|
|
},
|
|
{
|
|
loader: 'postcss-loader',
|
|
options: {
|
|
sourceMap: manifest.IS_DEVELOPMENT,
|
|
postcssOptions: {
|
|
plugins: [
|
|
[
|
|
cssNext(),
|
|
],
|
|
],
|
|
},
|
|
},
|
|
},
|
|
{
|
|
loader: 'sass-loader',
|
|
options: {
|
|
sourceMap: manifest.IS_DEVELOPMENT,
|
|
api: 'modern-compiler',
|
|
sassOptions: {
|
|
outputStyle: manifest.MINIFY ? 'compressed' : 'expanded',
|
|
includePaths: [
|
|
path.join('../../', 'node_modules'),
|
|
path.join(manifest.paths.src, 'assets', 'styles'),
|
|
path.join(manifest.paths.src, ''),
|
|
],
|
|
quietDeps: true,
|
|
verbose: false,
|
|
},
|
|
},
|
|
},
|
|
];
|
|
|
|
if (manifest.IS_PRODUCTION) {
|
|
loaders.unshift(ExtractTextPlugin.loader);
|
|
} else {
|
|
loaders.unshift({
|
|
loader: 'style-loader',
|
|
});
|
|
}
|
|
|
|
const rule = {
|
|
test: /\.scss$/,
|
|
use: loaders,
|
|
};
|
|
|
|
// -----------------
|
|
// @Exporting Module
|
|
// -----------------
|
|
|
|
module.exports = rule;
|