ae-biu
Version:
Born For AE, Born To Do
224 lines (178 loc) • 6.31 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _stringify = require('babel-runtime/core-js/json/stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _webpack = require('webpack');
var _webpack2 = _interopRequireDefault(_webpack);
var _htmlWebpackPlugin = require('html-webpack-plugin');
var _htmlWebpackPlugin2 = _interopRequireDefault(_htmlWebpackPlugin);
var _copyWebpackPlugin = require('copy-webpack-plugin');
var _copyWebpackPlugin2 = _interopRequireDefault(_copyWebpackPlugin);
var _friendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');
var _friendlyErrorsWebpackPlugin2 = _interopRequireDefault(_friendlyErrorsWebpackPlugin);
var _flat = require('flat');
var _flat2 = _interopRequireDefault(_flat);
var _logger = require('../utils/logger');
var _logger2 = _interopRequireDefault(_logger);
var _postcss = require('./postcss.config');
var _postcss2 = _interopRequireDefault(_postcss);
var _less = require('./less.config');
var _less2 = _interopRequireDefault(_less);
var _paths = require('../utils/paths');
var _getPolyfills = require('../utils/get-polyfills');
var _getPolyfills2 = _interopRequireDefault(_getPolyfills);
var _package = require('../utils/package');
var _package2 = _interopRequireDefault(_package);
var _webpack3 = require('./webpack.common');
var _webpack4 = _interopRequireDefault(_webpack3);
var _constants = require('../utils/constants');
var _useCdn = require('../utils/use-cdn');
var _useCdn2 = _interopRequireDefault(_useCdn);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
console.log();
_logger2.default.info('Create configuration for NODE_ENV: development\n');
var SDP_ENV = (process.env.SDP_ENV || 'test').trim();
_logger2.default.info('Project running under SDP_ENV: ' + SDP_ENV + '\n');
var polyfills = (0, _getPolyfills2.default)();
function getCSSLoader(lang, i18nLangs) {
var loaders = [{
loader: 'style-loader'
}, {
loader: 'css-loader',
options: {
importLoaders: 1
}
}, {
loader: 'postcss-loader',
options: (0, _postcss2.default)(i18nLangs)
}];
if (lang === 'less') {
loaders.push({
loader: 'less-loader',
options: _less2.default
});
}
return loaders;
}
var _pkg$ae = _package2.default.ae,
ae = _pkg$ae === undefined ? {} : _pkg$ae;
var _ae$languages = ae.languages,
LANGS = _ae$languages === undefined ? _constants.DEFAULT_LANG_MAP : _ae$languages,
_ae$output = ae.output,
dist = _ae$output === undefined ? 'dist' : _ae$output,
ORG_NAME = ae.org;
var webpackConfig = {
target: 'web',
entry: {
app: ['webpack-dev-server/client', 'webpack/hot/dev-server'].concat((0, _toConsumableArray3.default)(polyfills), [_path2.default.resolve(_paths.srcDir, 'index.js')])
},
output: {
path: _path2.default.resolve(_paths.workDir, dist),
publicPath: '/',
filename: '[name].[hash].js',
chunkFilename: '[id].[hash].js'
},
resolve: {
modules: [_paths.srcDir, 'node_modules'],
extensions: ['.js', '.jsx', '.ts', '.tsx', '.css', 'less'],
alias: (0, _extends3.default)({
'~': _paths.srcDir
}, _webpack4.default.alias)
},
node: {
fs: 'empty',
net: 'empty'
},
devtool: 'cheap-module-eval-source-map',
performance: {
hints: false
},
module: {
rules: [{
test: /\.jsx?$/,
include: _paths.srcDir,
use: [{
loader: 'eslint-loader',
options: {
emitWarning: true,
formatter: require('eslint-friendly-formatter')
}
}],
enforce: 'pre'
}, {
test: /\.jsx?$/,
include: [_paths.srcDir, /\.sdp\.nd[/\\](?!node_modules)/, /[/\\]node_modules.*[/\\]((lodash-)?es)[/\\](?!node_modules)/],
use: 'babel-loader'
}, {
test: /\.tsx?$/,
include: [_paths.srcDir, /\.sdp\.nd[/\\](?!node_modules)/],
use: [{
loader: 'babel-loader'
}, {
loader: 'ts-loader',
options: {
transpileOnly: true
}
}]
}, {
test: /\.css$/,
use: getCSSLoader('css', LANGS)
}, {
test: /\.less$/,
use: getCSSLoader('less', LANGS)
}, {
test: /\.(png|jpg|gif|svg|woff2?|eot|ttf)(\?.*)?$/,
use: [{
loader: 'url-loader',
options: {
limit: 8192,
name: '[name].[ext]?[hash:7]'
}
}]
}]
},
plugins: [].concat((0, _toConsumableArray3.default)(_webpack4.default.plugins), [new _webpack2.default.DefinePlugin({
'process.env.NODE_ENV': (0, _stringify2.default)('development'),
'process.env.SDP_ENV': (0, _stringify2.default)(process.env.SDP_ENV),
'process.env.LANGS': (0, _stringify2.default)(LANGS)
}), new _htmlWebpackPlugin2.default({
SDP_ENV: process.env.SDP_ENV,
ORG_NAME: ORG_NAME,
CDN: _package2.default.cdn || {},
filename: 'index.html',
template: _paths.tplPath,
title: _package2.default.name + ' - ' + _package2.default.description,
hash: false,
inject: !(0, _useCdn2.default)(_package2.default.cdn, process.env.SDP_ENV),
minify: {
collapseWhitespace: false,
minifyJS: false
}
}), new _copyWebpackPlugin2.default([{
from: _path2.default.resolve(_paths.srcDir, 'static')
}, {
context: _path2.default.resolve(_paths.srcDir, 'modules'),
from: '**/*.json',
to: 'locale',
transform: function transform(content) {
return (0, _stringify2.default)((0, _flat2.default)(JSON.parse(content)));
}
}], {
ignore: ['README.md']
}), new _webpack2.default.HotModuleReplacementPlugin(), new _webpack2.default.NamedModulesPlugin(), new _webpack2.default.NoEmitOnErrorsPlugin(), new _webpack2.default.LoaderOptionsPlugin({
debug: true,
options: {
context: _paths.workDir
}
}), new _friendlyErrorsWebpackPlugin2.default()])
};
exports.default = webpackConfig;
module.exports = exports['default'];