UNPKG

6.66 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = getWebpackCommonConfig;
7
8require("core-js/modules/es6.symbol");
9
10require("core-js/modules/web.dom.iterable");
11
12require("core-js/modules/es6.regexp.split");
13
14require("core-js/modules/es6.function.name");
15
16var _extractTextWebpackPlugin = _interopRequireDefault(require("extract-text-webpack-plugin"));
17
18var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
19
20var _fs = require("fs");
21
22var _path = require("path");
23
24var _autoprefixer = _interopRequireDefault(require("autoprefixer"));
25
26var _friendlyErrorsWebpackPlugin = _interopRequireDefault(require("friendly-errors-webpack-plugin"));
27
28var _imageminWebpackPlugin = _interopRequireDefault(require("imagemin-webpack-plugin"));
29
30var _getBabelCommonConfig = _interopRequireDefault(require("./get-babel-common-config"));
31
32function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
34function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
35
36function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
38function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
39
40function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
41
42function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
43
44function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
45
46function getWebpackCommonConfig(args) {
47 var pkgPath = (0, _path.join)(args.cwd, 'package.json');
48 var pkg = (0, _fs.existsSync)(pkgPath) ? require(pkgPath) : {};
49
50 if (!pkg.name) {
51 var _args$cwd$split$splic = args.cwd.split('/').splice(-1),
52 _args$cwd$split$splic2 = _slicedToArray(_args$cwd$split$splic, 1),
53 name = _args$cwd$split$splic2[0];
54
55 pkg.name = name;
56 }
57
58 if (!pkg.entry) {
59 pkg.entry = _defineProperty({}, pkg.name, './src');
60 }
61
62 var jsFileName = args.hash ? 'js/[name]-[chunkhash:5].js' : 'js/[name].js';
63 var cssFileName = args.hash ? 'css/[name]-[contenthash:5].css' : 'css/[name].css';
64 var silent = args.silent === true;
65 var babelOptions = (0, _getBabelCommonConfig.default)(args);
66 var browsersObj = {};
67
68 if (!pkg.browserslist) {
69 browsersObj.browsers = ['last 2 versions', 'Firefox ESR', '> 1%', 'ie >= 9', 'iOS >= 8', 'Android >= 4'];
70 }
71
72 var postcssOptions = {
73 sourceMap: true,
74 plugins: [(0, _autoprefixer.default)(browsersObj)]
75 };
76 var emptyBuildins = ['child_process', 'cluster', 'dgram', 'dns', 'fs', 'module', 'net', 'readline', 'repl', 'tls'];
77 var browser = pkg.browser || {};
78 var node = emptyBuildins.reduce(function (obj, name) {
79 if (!(name in browser)) {
80 return _objectSpread({}, obj, _defineProperty({}, name, 'empty'));
81 }
82
83 return obj;
84 }, {});
85 var config = {
86 options: {
87 babel: babelOptions,
88 postcss: postcssOptions
89 },
90 output: {
91 path: pkg.outputPath ? (0, _path.join)(process.cwd(), "./".concat(pkg.outputPath, "/").concat(pkg.name, "/").concat(pkg.version)) : (0, _path.join)(process.cwd(), './dist/'),
92 filename: jsFileName,
93 chunkFilename: jsFileName
94 },
95 devtool: args.dev ? 'source-map' : args.devtool,
96 resolve: {
97 modules: ['./', 'node_modules', (0, _path.resolve)(__dirname, '../node_modules')],
98 extensions: ['.ts', '.tsx', '.js', '.jsx']
99 },
100 resolveLoader: {
101 modules: ['node_modules', (0, _path.resolve)(__dirname, '../node_modules')]
102 },
103 entry: pkg.entry,
104 node: node,
105 module: {
106 rules: [{
107 test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
108 loader: 'url-loader',
109 options: {
110 name: 'font/[name]-[hash:5].[ext]',
111 limit: 8192,
112 minetype: 'application/font-woff'
113 }
114 }, {
115 test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
116 loader: 'url-loader',
117 options: {
118 name: 'font/[name]-[hash:5].[ext]',
119 limit: 8192,
120 minetype: 'application/font-woff'
121 }
122 }, {
123 test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
124 loader: 'url-loader',
125 options: {
126 name: 'font/[name]-[hash:5].[ext]',
127 limit: 8192,
128 minetype: 'application/octet-stream'
129 }
130 }, {
131 test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
132 loader: 'url-loader',
133 options: {
134 name: 'font/[name]-[hash:5].[ext]',
135 limit: 8192,
136 minetype: 'application/vnd.ms-fontobject'
137 }
138 }, {
139 test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
140 loader: 'url-loader',
141 options: {
142 name: 'img/[name]-[hash:5].[ext]',
143 limit: 8192,
144 minetype: 'image/svg+xml'
145 }
146 }, {
147 test: /\.(png|jpg|jpeg|gif)(\?v=\d+\.\d+\.\d+)?$/i,
148 loader: 'url-loader',
149 options: {
150 name: 'img/[name]-[hash:5].[ext]',
151 limit: 8192
152 }
153 }, {
154 test: /\.module\.(html|htm|txt|tpl)$/,
155 loader: 'raw-loader'
156 }]
157 },
158 plugins: [new _extractTextWebpackPlugin.default({
159 filename: cssFileName,
160 disable: !!args.dev,
161 allChunks: true
162 }), new _caseSensitivePathsWebpackPlugin.default(), new _friendlyErrorsWebpackPlugin.default({
163 onErrors: function onErrors(severity, errors) {
164 if (silent) return;
165
166 if (severity !== 'error') {
167 return;
168 }
169
170 var error = errors[0];
171 console.error("".concat(severity, " : ").concat(error.name));
172 }
173 }), new _imageminWebpackPlugin.default({
174 disable: !!args.dev,
175 pngquant: {
176 quality: '95-100'
177 },
178 jpegtran: {
179 progressive: true
180 }
181 })]
182 };
183 return config;
184}
\No newline at end of file