UNPKG

8.29 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 babelQuery = (0, _getBabelCommonConfig2.default)();
68 var tsQuery = (0, _getTSCommonConfig2.default)();
69 tsQuery.declaration = false;
70
71 var theme = {};
72 if (pkg.theme && typeof pkg.theme === 'string') {
73 var cfgPath = pkg.theme;
74 // relative path
75 if (cfgPath.charAt(0) === '.') {
76 cfgPath = (0, _path.resolve)(args.cwd, cfgPath);
77 }
78 var getThemeConfig = require(cfgPath);
79 theme = getThemeConfig();
80 } else if (pkg.theme && _typeof(pkg.theme) === 'object') {
81 theme = pkg.theme;
82 }
83
84 var emptyBuildins = ['child_process', 'cluster', 'dgram', 'dns', 'fs', 'module', 'net', 'readline', 'repl', 'tls'];
85
86 var browser = pkg.browser || {};
87
88 var node = emptyBuildins.reduce(function (obj, name) {
89 if (!(name in browser)) {
90 return _extends({}, obj, _defineProperty({}, name, 'empty'));
91 }
92 return obj;
93 }, {});
94
95 return {
96
97 babel: babelQuery,
98 ts: {
99 transpileOnly: true,
100 compilerOptions: tsQuery
101 },
102
103 output: {
104 path: (0, _path.join)(process.cwd(), './dist/'),
105 filename: jsFileName,
106 chunkFilename: jsFileName
107 },
108
109 devtool: args.devtool,
110
111 resolve: {
112 modulesDirectories: ['node_modules', (0, _path.join)(__dirname, '../node_modules')],
113 extensions: ['', '.web.tsx', '.web.ts', '.web.jsx', '.web.js', '.ts', '.tsx', '.js', '.jsx', '.json']
114 },
115
116 resolveLoader: {
117 modulesDirectories: ['node_modules', (0, _path.join)(__dirname, '../node_modules')]
118 },
119
120 entry: pkg.entry,
121
122 node: node,
123
124 module: {
125 noParse: [/moment.js/],
126 loaders: [{
127 test: /\.js$/,
128 exclude: /node_modules/,
129 loader: require.resolve('babel-loader'),
130 query: babelQuery
131 }, {
132 test: /\.jsx$/,
133 loader: require.resolve('babel-loader'),
134 query: babelQuery
135 }, {
136 test: /\.tsx?$/,
137 loaders: [require.resolve('babel-loader'), require.resolve('ts-loader')]
138 }, {
139 test: function test(filePath) {
140 return (/\.css$/.test(filePath) && !/\.module\.css$/.test(filePath)
141 );
142 },
143
144 loader: _extractTextWebpackPlugin2.default.extract('' + require.resolve('css-loader') + ('?sourceMap&-restructuring&-autoprefixer!' + require.resolve('postcss-loader')))
145 }, {
146 test: /\.module\.css$/,
147 loader: _extractTextWebpackPlugin2.default.extract('' + require.resolve('css-loader') + '?sourceMap&-restructuring&modules&localIdentName=[local]___[hash:base64:5]&-autoprefixer!' + ('' + require.resolve('postcss-loader')))
148 }, {
149 test: function test(filePath) {
150 return (/\.less$/.test(filePath) && !/\.module\.less$/.test(filePath)
151 );
152 },
153
154 loader: _extractTextWebpackPlugin2.default.extract(require.resolve('css-loader') + '?sourceMap&-autoprefixer!' + (require.resolve('postcss-loader') + '!') + (require.resolve('less-loader') + '?{"sourceMap":true,"modifyVars":' + JSON.stringify(theme) + '}'))
155 }, {
156 test: /\.module\.less$/,
157 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) + '}'))
158 }, {
159 test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
160 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=application/font-woff'
161 }, {
162 test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
163 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=application/font-woff'
164 }, {
165 test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
166 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=application/octet-stream'
167 }, { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
168 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=application/vnd.ms-fontobject'
169 }, {
170 test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
171 loader: require.resolve('url-loader') + '?' + 'limit=10000&minetype=image/svg+xml'
172 }, {
173 test: /\.(png|jpg|jpeg|gif)(\?v=\d+\.\d+\.\d+)?$/i,
174 loader: require.resolve('url-loader') + '?limit=10000'
175 }, {
176 test: /\.json$/,
177 loader: '' + require.resolve('json-loader')
178 }, {
179 test: /\.html?$/,
180 loader: require.resolve('file-loader') + '?name=[name].[ext]'
181 }]
182 },
183
184 postcss: [(0, _rucksackCss2.default)(), (0, _autoprefixer2.default)({
185 browsers: ['last 2 versions', 'Firefox ESR', '> 1%', 'ie >= 8', 'iOS >= 8', 'Android >= 4']
186 })],
187
188 plugins: [new _webpack2.default.optimize.CommonsChunkPlugin('common', commonName), new _extractTextWebpackPlugin2.default(cssFileName, {
189 disable: false,
190 allChunks: true
191 }), new _webpack2.default.optimize.OccurenceOrderPlugin(), new _caseSensitivePathsWebpackPlugin2.default(), new _friendlyErrorsWebpackPlugin2.default({
192 onErrors: function onErrors(severity, errors) {
193 if (severity !== 'error') {
194 _nodeNotifier2.default.notify({
195 title: 'ant tool',
196 message: 'warn',
197 contentImage: (0, _path.join)(__dirname, '../assets/warn.png'),
198 sound: 'Glass'
199 });
200 return;
201 }
202 var error = errors[0];
203 _nodeNotifier2.default.notify({
204 title: 'ant tool',
205 message: severity + ' : ' + error.name,
206 subtitle: error.file || '',
207 contentImage: (0, _path.join)(__dirname, '../assets/fail.png'),
208 sound: 'Glass'
209 });
210 }
211 })]
212 };
213}
214module.exports = exports['default'];
\No newline at end of file