UNPKG

8.35 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
8
9var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
10
11exports.default = getWebpackCommonConfig;
12
13var _webpack = require('webpack');
14
15var _webpack2 = _interopRequireDefault(_webpack);
16
17var _extractTextWebpackPlugin = require('extract-text-webpack-plugin');
18
19var _extractTextWebpackPlugin2 = _interopRequireDefault(_extractTextWebpackPlugin);
20
21var _caseSensitivePathsWebpackPlugin = require('case-sensitive-paths-webpack-plugin');
22
23var _caseSensitivePathsWebpackPlugin2 = _interopRequireDefault(_caseSensitivePathsWebpackPlugin);
24
25var _fs = require('fs');
26
27var _path = require('path');
28
29var _rucksackCss = require('rucksack-css');
30
31var _rucksackCss2 = _interopRequireDefault(_rucksackCss);
32
33var _autoprefixer = require('autoprefixer');
34
35var _autoprefixer2 = _interopRequireDefault(_autoprefixer);
36
37var _friendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');
38
39var _friendlyErrorsWebpackPlugin2 = _interopRequireDefault(_friendlyErrorsWebpackPlugin);
40
41var _nodeNotifier = require('node-notifier');
42
43var _nodeNotifier2 = _interopRequireDefault(_nodeNotifier);
44
45var _getBabelCommonConfig = require('./getBabelCommonConfig');
46
47var _getBabelCommonConfig2 = _interopRequireDefault(_getBabelCommonConfig);
48
49var _getTSCommonConfig = require('./getTSCommonConfig');
50
51var _getTSCommonConfig2 = _interopRequireDefault(_getTSCommonConfig);
52
53function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
54
55function _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; }
56
57/* eslint quotes:0 */
58
59function getWebpackCommonConfig(args) {
60 var pkgPath = (0, _path.join)(args.cwd, 'package.json');
61 var pkg = (0, _fs.existsSync)(pkgPath) ? require(pkgPath) : {};
62
63 var jsFileName = args.hash ? '[name]-[chunkhash].js' : '[name].js';
64 var cssFileName = args.hash ? '[name]-[chunkhash].css' : '[name].css';
65 var commonName = args.hash ? 'common-[chunkhash].js' : 'common.js';
66
67 var silent = args.silent === true;
68 var babelQuery = (0, _getBabelCommonConfig2.default)();
69 var tsQuery = (0, _getTSCommonConfig2.default)();
70 tsQuery.declaration = false;
71
72 var theme = {};
73 if (pkg.theme && typeof pkg.theme === 'string') {
74 var cfgPath = pkg.theme;
75 // relative path
76 if (cfgPath.charAt(0) === '.') {
77 cfgPath = (0, _path.resolve)(args.cwd, cfgPath);
78 }
79 var getThemeConfig = require(cfgPath);
80 theme = getThemeConfig();
81 } else if (pkg.theme && _typeof(pkg.theme) === 'object') {
82 theme = pkg.theme;
83 }
84
85 var emptyBuildins = ['child_process', 'cluster', 'dgram', 'dns', 'fs', 'module', 'net', 'readline', 'repl', 'tls'];
86
87 var browser = pkg.browser || {};
88
89 var node = emptyBuildins.reduce(function (obj, name) {
90 if (!(name in browser)) {
91 return _extends({}, obj, _defineProperty({}, name, 'empty'));
92 }
93 return obj;
94 }, {});
95
96 return {
97
98 babel: babelQuery,
99 ts: {
100 transpileOnly: true,
101 compilerOptions: tsQuery
102 },
103
104 output: {
105 path: (0, _path.join)(process.cwd(), './dist/'),
106 filename: jsFileName,
107 chunkFilename: jsFileName
108 },
109
110 devtool: args.devtool,
111
112 resolve: {
113 modulesDirectories: ['node_modules', (0, _path.join)(__dirname, '../node_modules')],
114 extensions: ['', '.web.tsx', '.web.ts', '.web.jsx', '.web.js', '.ts', '.tsx', '.js', '.jsx', '.json']
115 },
116
117 resolveLoader: {
118 modulesDirectories: ['node_modules', (0, _path.join)(__dirname, '../node_modules')]
119 },
120
121 entry: pkg.entry,
122
123 node: node,
124
125 module: {
126 noParse: [/moment.js/],
127 loaders: [{
128 test: /\.js$/,
129 exclude: /node_modules/,
130 loader: require.resolve('babel-loader'),
131 query: babelQuery
132 }, {
133 test: /\.jsx$/,
134 loader: require.resolve('babel-loader'),
135 query: babelQuery
136 }, {
137 test: /\.tsx?$/,
138 loaders: [require.resolve('babel-loader'), require.resolve('ts-loader')]
139 }, {
140 test: function test(filePath) {
141 return (/\.css$/.test(filePath) && !/\.module\.css$/.test(filePath)
142 );
143 },
144
145 loader: _extractTextWebpackPlugin2.default.extract('' + require.resolve('css-loader') + ('?sourceMap&-restructuring&-autoprefixer!' + require.resolve('postcss-loader')))
146 }, {
147 test: /\.module\.css$/,
148 loader: _extractTextWebpackPlugin2.default.extract('' + require.resolve('css-loader') + '?sourceMap&-restructuring&modules&localIdentName=[local]___[hash:base64:5]&-autoprefixer!' + ('' + require.resolve('postcss-loader')))
149 }, {
150 test: function test(filePath) {
151 return (/\.less$/.test(filePath) && !/\.module\.less$/.test(filePath)
152 );
153 },
154
155 loader: _extractTextWebpackPlugin2.default.extract(require.resolve('css-loader') + '?sourceMap&-autoprefixer!' + (require.resolve('postcss-loader') + '!') + (require.resolve('less-loader') + '?{"sourceMap":true,"modifyVars":' + JSON.stringify(theme) + '}'))
156 }, {
157 test: /\.module\.less$/,
158 loader: _extractTextWebpackPlugin2.default.extract(require.resolve('css-loader') + '?' + 'sourceMap&modules&localIdentName=[local]___[hash:base64:5]&-autoprefixer!' + (require.resolve('postcss-loader') + '!') + (require.resolve('less-loader') + '?') + ('{"sourceMap":true,"modifyVars":' + JSON.stringify(theme) + '}'))
159 }, {
160 test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
161 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=application/font-woff'
162 }, {
163 test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
164 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=application/font-woff'
165 }, {
166 test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
167 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=application/octet-stream'
168 }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
169 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=application/vnd.ms-fontobject'
170 }, {
171 test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
172 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=image/svg+xml'
173 }, {
174 test: /\.(png|jpg|jpeg|gif)(\?v=\d+\.\d+\.\d+)?$/i,
175 loader: require.resolve('url-loader') + '?limit=10000'
176 }, {
177 test: /\.json$/,
178 loader: '' + require.resolve('json-loader')
179 }, {
180 test: /\.html?$/,
181 loader: require.resolve('file-loader') + '?name=[name].[ext]'
182 }]
183 },
184
185 postcss: [(0, _rucksackCss2.default)(), (0, _autoprefixer2.default)({
186 browsers: ['last 2 versions', 'Firefox ESR', '> 1%', 'ie >= 8', 'iOS >= 8', 'Android >= 4']
187 })],
188
189 plugins: [new _webpack2.default.optimize.CommonsChunkPlugin('common', commonName), new _extractTextWebpackPlugin2.default(cssFileName, {
190 disable: false,
191 allChunks: true
192 }), new _webpack2.default.optimize.OccurenceOrderPlugin(), new _caseSensitivePathsWebpackPlugin2.default(), new _friendlyErrorsWebpackPlugin2.default({
193 onErrors: function onErrors(severity, errors) {
194 if (silent) return;
195 if (severity !== 'error') {
196 _nodeNotifier2.default.notify({
197 title: 'ant tool',
198 message: 'warn',
199 contentImage: (0, _path.join)(__dirname, '../assets/warn.png'),
200 sound: 'Glass'
201 });
202 return;
203 }
204 var error = errors[0];
205 _nodeNotifier2.default.notify({
206 title: 'ant tool',
207 message: severity + ' : ' + error.name,
208 subtitle: error.file || '',
209 contentImage: (0, _path.join)(__dirname, '../assets/fail.png'),
210 sound: 'Glass'
211 });
212 }
213 })]
214 };
215}
216module.exports = exports['default'];
\No newline at end of file