@nogard7491/wsc
Version:
Simple to use, blazing fast and thoroughly tested websocket client.
78 lines (66 loc) • 2.37 kB
JavaScript
;
const path = require('path');
const Webpack = require('webpack');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const packageInfo = require('./package.json');
const packageName = packageInfo.name;
const packageVersion = packageInfo.version;
module.exports = (env, argv) => {
/** @const {string} Режим продашена. */
const PRODUCTION_MODE = 'production';
/** @const {string} Режим разработки. */
const DEVELOPMENT_MODE = 'development';
/** @const {string} Название библиотеки. */
const LIBRARY_NAME = 'Wsc';
/** @type {string} Название файла для входа. */
let entryFileName = LIBRARY_NAME.toLowerCase() + '-' + packageVersion;
/** @type {{}} Файлы для входа и пути к ним. */
let entry = {};
entry[entryFileName] = './index.js';
entry[entryFileName + '.min'] = './index.js';
/** @type {Object} Конфигурация. */
let config = {
context: __dirname,
entry: entry,
output: {
path: path.resolve(__dirname + '/dist'),
filename: '[name].js',
library: LIBRARY_NAME,
libraryTarget: 'umd',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: [
'babel-loader',
]
},
]
},
optimization: {
minimize: true,
minimizer: [new UglifyJsPlugin({
include: /\.min\.js$/
})]
},
plugins: [
new CleanWebpackPlugin([
'./dist/**/*',
], {
root: path.resolve(__dirname),
})
]
};
// установка дополнительных параметров конфигурации (в зависимости от режима)
switch (argv.mode) {
case PRODUCTION_MODE:
config.devtool = 'source-map';
break;
case DEVELOPMENT_MODE:
break;
}
return config;
};