@doracli/webpack 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +1061 -1
- package/lib/esm/index.js +1030 -1
- package/lib/type/index.d.ts +41 -17
- package/package.json +7 -7
package/lib/cjs/index.js
CHANGED
|
@@ -1 +1,1061 @@
|
|
|
1
|
-
"use strict";var e=require("webpack"),r=require("@dorabag/file-pro"),t=require("@doracli/helper"),n=require("@doracli/preset-babel"),o=require("path"),i=require("mini-css-extract-plugin"),s=require("terser-webpack-plugin"),a=require("html-webpack-plugin"),u=require("webpack-bundle-analyzer"),c=require("webpackbar"),l=require("webpack-dev-server"),p=require("@dorabag/open-browser"),f=require("@cclr/lang"),d="undefined"!=typeof document?document.currentScript:null;function m(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}function h(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function g(e,r,t){return r&&function(e,r){for(var t=0;t<r.length;t++){var n=r[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,C(n.key),n)}}(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function v(e,r,t){return(r=C(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function b(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,n)}return t}function y(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?b(Object(t),!0).forEach(function(r){v(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function x(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==r.indexOf(n))continue;t[n]=e[n]}return t}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t=i[n],-1===r.indexOf(t)&&{}.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}function w(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(e){if("string"==typeof e)return m(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?m(e,r):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function C(e){var r=function(e,r){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==typeof r?r:r+""}var R=["port"],P=["index","src/index"],j=[".ts",".js",".tsx",".jsx"],O=["index.html","public/index.html"],k=r.getDirname({url:"undefined"==typeof document?require("url").pathToFileURL(__filename).href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("index.js",document.baseURI).href}),S=r.getPackageRoot(k),U=o.join(S,"node_modules"),q=o.join(S,"lib/preset/html/dev-preset.html"),L=function(){return y({babelrc:!1,configFile:!1,compact:!1,cwd:r.getNodeModulesDir(k)},n.reactBabelPreset())},T=r.requireResolve("undefined"==typeof document?require("url").pathToFileURL(__filename).href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("index.js",document.baseURI).href,"css-loader"),A=r.requireResolve("undefined"==typeof document?require("url").pathToFileURL(__filename).href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("index.js",document.baseURI).href,"postcss-loader"),D=r.requireResolve("undefined"==typeof document?require("url").pathToFileURL(__filename).href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("index.js",document.baseURI).href,"style-loader"),I=r.requireResolve("undefined"==typeof document?require("url").pathToFileURL(__filename).href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("index.js",document.baseURI).href,"babel-loader"),_=r.requireResolve("undefined"==typeof document?require("url").pathToFileURL(__filename).href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("index.js",document.baseURI).href,"less-loader"),E=r.requireResolve("undefined"==typeof document?require("url").pathToFileURL(__filename).href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("index.js",document.baseURI).href,"sass-loader"),z=r.requireResolve("undefined"==typeof document?require("url").pathToFileURL(__filename).href:d&&"SCRIPT"===d.tagName.toUpperCase()&&d.src||new URL("index.js",document.baseURI).href,"postcss-preset-env"),F=function(e,r){var t=e.action,n=(r||{}).postcssPluginExtra,o=[T,{loader:A,options:{postcssOptions:{plugins:[[z]].concat(w(n||[]))}}}];return"server"===t?o.unshift({loader:D}):o.unshift({loader:i.loader}),o},N=["path","filename"],$=["minimize","template"],B=function(e){var r=e.minimize,t=e.template,n=x(e,$);return new a(y({title:"webpack5-react-ts",filename:"index.html",template:t||q,inject:!0,hash:!0,cache:!1,minify:!!r&&{removeAttributeQuotes:!0,collapseWhitespace:!0,removeComments:!0,minifyJS:!0,minifyCSS:!0}},n))};var W=function(){return g(function e(r){h(this,e),v(this,"workRootDir",void 0),this.workRootDir=r},[{key:"apply",value:function(e){var r=this;e.hooks.beforeRun.tapPromise("TsconfigPlugin",function(e){return new Promise(function(n,i){var s,a=function(){try{return n()}catch(e){return i(e)}},u=function(e){try{return t.cLog.error("init","error","自动注入 tsconfig.json 失败"),a()}catch(e){return i(e)}};try{return function(e){var r=[],t=function(e){if(e)if("string"==typeof e)r.push(e);else if(Array.isArray(e))e.forEach(t);else if("object"==typeof e){var n=e;n.import?t(n.import):Object.values(n).forEach(t)}};return t(e),r}(null!==(s=e.options&&e.options.entry)&&void 0!==s?s:{}).some(function(e){return/\.(ts|tsx)$/.test(o.extname(String(e)))})?Promise.resolve(t.insertTsconfig(r.workRootDir)).then(function(e){try{return a()}catch(e){return u()}},u):n()}catch(e){u()}})})}}])}(),M=function(e){return new W(e.workRootDir)},H=e.ProgressPlugin,J=function(){return g(function e(t){h(this,e),v(this,"configCtx",void 0),v(this,"webpackConfig",{}),v(this,"devServerConfig",{}),v(this,"envParams",{action:"build",workRootDir:r.getCwd()}),this.configCtx=t},[{key:"updateEnvParams",value:function(e){this.envParams=y(y({},this.envParams),e)}},{key:"updateWebpackConfig",value:function(e){this.webpackConfig=y(y({},this.webpackConfig),e)}},{key:"updateDevServerConfig",value:function(e){this.devServerConfig=y(y({},this.devServerConfig),e)}},{key:"getDoraConfig",value:function(){return this.configCtx.getDoraConfig()}},{key:"geTDoraConfigWebpack",value:function(){return this.configCtx.getDoraConfig().webpackConfig||{}}}])}(),Q={host:"127.0.0.1",open:!0,setupExitSignals:!0,compress:!1,hot:!0,historyApiFallback:!0,static:[{directory:r.resolveCwd("./public")},{directory:r.resolveCwd("./dist")}],headers:{"Access-Control-Allow-Origin":"*"},port:"8082"},G=["static","headers"],K=function(){for(var e={static:[],headers:{}},r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.forEach(function(r){var t,n=r.static,o=r.headers,i=x(r,G);f.isArray(e.static)&&f.isArray(n)&&(t=e.static).push.apply(t,w(n));o&&(e.headers=y(y({},e.headers),o)),Object.assign(e,i)}),e};exports.Ctx=J,exports.babelLoader=I,exports.build=function(r){return new Promise(function(t,n){try{e(r,function(e,r){t({err:e,stats:r})})}catch(e){n(e)}})},exports.createCompiler=function(r){return e(r)},exports.cssLoader=T,exports.getBabelConfig=L,exports.getCssBaseLoader=F,exports.getDevServer=function(e){var t=e.port,n=x(e,R);return y(y({host:"127.0.0.1",open:!1,setupExitSignals:!0,compress:!1,hot:!0,historyApiFallback:!0,static:[{directory:r.resolveCwd("./public")},{directory:r.resolveCwd("./dist")}],headers:{"Access-Control-Allow-Origin":"*"}},n),{},{port:t||"7777"})},exports.getDevtool=function(e,r){return r||("server"===e.action?"eval-cheap-module-source-map":"source-map")},exports.getEntry=function(e,n){if(n)return n;var o=e.workRootDir,i=P.reduce(function(e,r){return j.forEach(function(t){e.push("./"+r+t)}),e},[]),s=r.lookupFile(i,o);return s||(t.cLog.warn("dora-wr","getEntry","需要有一个入口文件 index 或者 src/index"),process.exit()),s},exports.getExternals=function(e){return e||[]},exports.getHtmlWebpackPlugin=B,exports.getMode=function(e,r){return r||("server"===e.action?"development":"production")},exports.getOptimization=function(e){var r=e.minimize;return r?{minimize:r,minimizer:[new s({extractComments:!1})]}:{minimize:!1}},exports.getOutput=function(e,r){var t=e.workRootDir,n=r||{},i=n.path,s=n.filename,a=x(n,N);return y({filename:s||"js/[name].[contenthash].js",path:i&&o.isAbsolute(i)?i:o.join(t,i||"dist"),clean:!0,publicPath:"/"},a)},exports.getReactModulePreset=function(e,r){var t=F(e,r),n=L();return{rules:[{oneOf:[{test:/\.(js|mjs|jsx|ts|tsx)$/,resolve:{fullySpecified:!1},use:[{loader:I,options:n}]},{test:/\.css$/,use:w(t)},{test:/\.less$/,use:[].concat(w(t),[_])},{test:/\.s[ac]ss$/,use:[].concat(w(t),[E])},{test:/\.(jpe?g|png|gif|svg)$/i,type:"asset",generator:{filename:"img/[name]_[hash:8][ext]"},parser:{dataUrlCondition:{maxSize:8192}}},{test:/\.(otf|eot|woff2?|ttf|svg)$/i,type:"asset",generator:{filename:"icon/[name]_[hash:8][ext]"},parser:{dataUrlCondition:{maxSize:2048}}}]}]}},exports.getReactPluginsPreset=function(e,n){var o=e.action,s="server"===o,a=n.WebpackBundleAnalyzerOptions,l=n.HtmlWebpackPluginOptions,p=n.minimize,f=r.lookupFile(O);f||t.cLog.warn("init","not_found","未找到 html 入口文件,将使用预设配置");var d=[M(e)];return s||d.push(new H({activeModules:!1,entries:!0,modules:!0,modulesCount:5e3,profile:!1,dependencies:!0,dependenciesCount:1e4,percentBy:"entries"})),"lib"!==o&&d.push(B(y({minimize:p,template:f||void 0},l))),s||d.push(new c,new i({filename:"css/main.[contenthash].css"})),a&&d.push(new u.BundleAnalyzerPlugin(a)),d.filter(Boolean)},exports.getResolve=function(e){return y({extensions:[".ts",".tsx",".js",".jsx"]},e)},exports.getResolveLoader=function(){return{modules:[U],extensions:[".js",".json"],mainFields:["loader","main"]}},exports.getTsconfigPlugin=M,exports.lessLoader=_,exports.mergeServerConfig=K,exports.postcssLoader=A,exports.postcssPresetEnv=z,exports.sassLoader=E,exports.service=function(e,r){return new Promise(function(t,n){var o,i,s,a,u;return o=K(Q,e),i=o.open,s=o.port,a=o.host,u=new l(K(y(y({},o),{},{open:!1})),r),Promise.resolve(u.start()).then(function(e){try{return i&&p("http://".concat(a,":").concat(s)),t()}catch(e){return n(e)}},n)})},exports.styleLoader=D;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var webpack = require('webpack');
|
|
4
|
+
var WebpackDevServer = require('webpack-dev-server');
|
|
5
|
+
var lang = require('@cclr/lang');
|
|
6
|
+
var openBrowser = require('@dorabag/open-browser');
|
|
7
|
+
var helper = require('@doracli/helper');
|
|
8
|
+
var filePro = require('@dorabag/file-pro');
|
|
9
|
+
var presetBabel = require('@doracli/preset-babel');
|
|
10
|
+
var path = require('path');
|
|
11
|
+
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
12
|
+
var TerserPlugin = require('terser-webpack-plugin');
|
|
13
|
+
var HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
14
|
+
var WebpackBundleAnalyzer = require('webpack-bundle-analyzer');
|
|
15
|
+
var WebpackBarPlugin = require('webpackbar');
|
|
16
|
+
|
|
17
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
18
|
+
var build = function build(options) {
|
|
19
|
+
return new Promise(function (resolve, reject) {
|
|
20
|
+
try {
|
|
21
|
+
webpack(options, function (err, stats) {
|
|
22
|
+
resolve({
|
|
23
|
+
err: err,
|
|
24
|
+
stats: stats
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
} catch (error) {
|
|
28
|
+
reject(error);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
function _arrayLikeToArray(r, a) {
|
|
34
|
+
(null == a || a > r.length) && (a = r.length);
|
|
35
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
36
|
+
return n;
|
|
37
|
+
}
|
|
38
|
+
function _arrayWithHoles(r) {
|
|
39
|
+
if (Array.isArray(r)) return r;
|
|
40
|
+
}
|
|
41
|
+
function _arrayWithoutHoles(r) {
|
|
42
|
+
if (Array.isArray(r)) return _arrayLikeToArray(r);
|
|
43
|
+
}
|
|
44
|
+
function _assertThisInitialized(e) {
|
|
45
|
+
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
46
|
+
return e;
|
|
47
|
+
}
|
|
48
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) {
|
|
49
|
+
try {
|
|
50
|
+
var i = n[a](c),
|
|
51
|
+
u = i.value;
|
|
52
|
+
} catch (n) {
|
|
53
|
+
return void e(n);
|
|
54
|
+
}
|
|
55
|
+
i.done ? t(u) : Promise.resolve(u).then(r, o);
|
|
56
|
+
}
|
|
57
|
+
function _asyncToGenerator(n) {
|
|
58
|
+
return function () {
|
|
59
|
+
var t = this,
|
|
60
|
+
e = arguments;
|
|
61
|
+
return new Promise(function (r, o) {
|
|
62
|
+
var a = n.apply(t, e);
|
|
63
|
+
function _next(n) {
|
|
64
|
+
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
|
|
65
|
+
}
|
|
66
|
+
function _throw(n) {
|
|
67
|
+
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
|
|
68
|
+
}
|
|
69
|
+
_next(void 0);
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function _callSuper(t, o, e) {
|
|
74
|
+
return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));
|
|
75
|
+
}
|
|
76
|
+
function _classCallCheck(a, n) {
|
|
77
|
+
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
|
|
78
|
+
}
|
|
79
|
+
function _defineProperties(e, r) {
|
|
80
|
+
for (var t = 0; t < r.length; t++) {
|
|
81
|
+
var o = r[t];
|
|
82
|
+
o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function _createClass(e, r, t) {
|
|
86
|
+
return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
|
|
87
|
+
writable: false
|
|
88
|
+
}), e;
|
|
89
|
+
}
|
|
90
|
+
function _defineProperty(e, r, t) {
|
|
91
|
+
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
92
|
+
value: t,
|
|
93
|
+
enumerable: true,
|
|
94
|
+
configurable: true,
|
|
95
|
+
writable: true
|
|
96
|
+
}) : e[r] = t, e;
|
|
97
|
+
}
|
|
98
|
+
function _getPrototypeOf(t) {
|
|
99
|
+
return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
|
|
100
|
+
return t.__proto__ || Object.getPrototypeOf(t);
|
|
101
|
+
}, _getPrototypeOf(t);
|
|
102
|
+
}
|
|
103
|
+
function _inherits(t, e) {
|
|
104
|
+
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
|
|
105
|
+
t.prototype = Object.create(e && e.prototype, {
|
|
106
|
+
constructor: {
|
|
107
|
+
value: t,
|
|
108
|
+
writable: true,
|
|
109
|
+
configurable: true
|
|
110
|
+
}
|
|
111
|
+
}), Object.defineProperty(t, "prototype", {
|
|
112
|
+
writable: false
|
|
113
|
+
}), e && _setPrototypeOf(t, e);
|
|
114
|
+
}
|
|
115
|
+
function _isNativeReflectConstruct() {
|
|
116
|
+
try {
|
|
117
|
+
var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
118
|
+
} catch (t) {}
|
|
119
|
+
return (_isNativeReflectConstruct = function () {
|
|
120
|
+
return !!t;
|
|
121
|
+
})();
|
|
122
|
+
}
|
|
123
|
+
function _iterableToArray(r) {
|
|
124
|
+
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
|
|
125
|
+
}
|
|
126
|
+
function _iterableToArrayLimit(r, l) {
|
|
127
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
128
|
+
if (null != t) {
|
|
129
|
+
var e,
|
|
130
|
+
n,
|
|
131
|
+
i,
|
|
132
|
+
u,
|
|
133
|
+
a = [],
|
|
134
|
+
f = true,
|
|
135
|
+
o = false;
|
|
136
|
+
try {
|
|
137
|
+
if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
138
|
+
} catch (r) {
|
|
139
|
+
o = true, n = r;
|
|
140
|
+
} finally {
|
|
141
|
+
try {
|
|
142
|
+
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
143
|
+
} finally {
|
|
144
|
+
if (o) throw n;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return a;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function _nonIterableRest() {
|
|
151
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
152
|
+
}
|
|
153
|
+
function _nonIterableSpread() {
|
|
154
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
155
|
+
}
|
|
156
|
+
function ownKeys(e, r) {
|
|
157
|
+
var t = Object.keys(e);
|
|
158
|
+
if (Object.getOwnPropertySymbols) {
|
|
159
|
+
var o = Object.getOwnPropertySymbols(e);
|
|
160
|
+
r && (o = o.filter(function (r) {
|
|
161
|
+
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
162
|
+
})), t.push.apply(t, o);
|
|
163
|
+
}
|
|
164
|
+
return t;
|
|
165
|
+
}
|
|
166
|
+
function _objectSpread2(e) {
|
|
167
|
+
for (var r = 1; r < arguments.length; r++) {
|
|
168
|
+
var t = null != arguments[r] ? arguments[r] : {};
|
|
169
|
+
r % 2 ? ownKeys(Object(t), true).forEach(function (r) {
|
|
170
|
+
_defineProperty(e, r, t[r]);
|
|
171
|
+
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
172
|
+
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return e;
|
|
176
|
+
}
|
|
177
|
+
function _objectWithoutProperties(e, t) {
|
|
178
|
+
if (null == e) return {};
|
|
179
|
+
var o,
|
|
180
|
+
r,
|
|
181
|
+
i = _objectWithoutPropertiesLoose(e, t);
|
|
182
|
+
if (Object.getOwnPropertySymbols) {
|
|
183
|
+
var n = Object.getOwnPropertySymbols(e);
|
|
184
|
+
for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
|
|
185
|
+
}
|
|
186
|
+
return i;
|
|
187
|
+
}
|
|
188
|
+
function _objectWithoutPropertiesLoose(r, e) {
|
|
189
|
+
if (null == r) return {};
|
|
190
|
+
var t = {};
|
|
191
|
+
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
192
|
+
if (-1 !== e.indexOf(n)) continue;
|
|
193
|
+
t[n] = r[n];
|
|
194
|
+
}
|
|
195
|
+
return t;
|
|
196
|
+
}
|
|
197
|
+
function _possibleConstructorReturn(t, e) {
|
|
198
|
+
if (e && ("object" == typeof e || "function" == typeof e)) return e;
|
|
199
|
+
if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
|
|
200
|
+
return _assertThisInitialized(t);
|
|
201
|
+
}
|
|
202
|
+
function _regenerator() {
|
|
203
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
204
|
+
var e,
|
|
205
|
+
t,
|
|
206
|
+
r = "function" == typeof Symbol ? Symbol : {},
|
|
207
|
+
n = r.iterator || "@@iterator",
|
|
208
|
+
o = r.toStringTag || "@@toStringTag";
|
|
209
|
+
function i(r, n, o, i) {
|
|
210
|
+
var c = n && n.prototype instanceof Generator ? n : Generator,
|
|
211
|
+
u = Object.create(c.prototype);
|
|
212
|
+
return _regeneratorDefine(u, "_invoke", function (r, n, o) {
|
|
213
|
+
var i,
|
|
214
|
+
c,
|
|
215
|
+
u,
|
|
216
|
+
f = 0,
|
|
217
|
+
p = o || [],
|
|
218
|
+
y = false,
|
|
219
|
+
G = {
|
|
220
|
+
p: 0,
|
|
221
|
+
n: 0,
|
|
222
|
+
v: e,
|
|
223
|
+
a: d,
|
|
224
|
+
f: d.bind(e, 4),
|
|
225
|
+
d: function (t, r) {
|
|
226
|
+
return i = t, c = 0, u = e, G.n = r, a;
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
function d(r, n) {
|
|
230
|
+
for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {
|
|
231
|
+
var o,
|
|
232
|
+
i = p[t],
|
|
233
|
+
d = G.p,
|
|
234
|
+
l = i[2];
|
|
235
|
+
r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
|
|
236
|
+
}
|
|
237
|
+
if (o || r > 1) return a;
|
|
238
|
+
throw y = true, n;
|
|
239
|
+
}
|
|
240
|
+
return function (o, p, l) {
|
|
241
|
+
if (f > 1) throw TypeError("Generator is already running");
|
|
242
|
+
for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {
|
|
243
|
+
i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);
|
|
244
|
+
try {
|
|
245
|
+
if (f = 2, i) {
|
|
246
|
+
if (c || (o = "next"), t = i[o]) {
|
|
247
|
+
if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");
|
|
248
|
+
if (!t.done) return t;
|
|
249
|
+
u = t.value, c < 2 && (c = 0);
|
|
250
|
+
} else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);
|
|
251
|
+
i = e;
|
|
252
|
+
} else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;
|
|
253
|
+
} catch (t) {
|
|
254
|
+
i = e, c = 1, u = t;
|
|
255
|
+
} finally {
|
|
256
|
+
f = 1;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return {
|
|
260
|
+
value: t,
|
|
261
|
+
done: y
|
|
262
|
+
};
|
|
263
|
+
};
|
|
264
|
+
}(r, o, i), true), u;
|
|
265
|
+
}
|
|
266
|
+
var a = {};
|
|
267
|
+
function Generator() {}
|
|
268
|
+
function GeneratorFunction() {}
|
|
269
|
+
function GeneratorFunctionPrototype() {}
|
|
270
|
+
t = Object.getPrototypeOf;
|
|
271
|
+
var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () {
|
|
272
|
+
return this;
|
|
273
|
+
}), t),
|
|
274
|
+
u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);
|
|
275
|
+
function f(e) {
|
|
276
|
+
return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;
|
|
277
|
+
}
|
|
278
|
+
return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () {
|
|
279
|
+
return this;
|
|
280
|
+
}), _regeneratorDefine(u, "toString", function () {
|
|
281
|
+
return "[object Generator]";
|
|
282
|
+
}), (_regenerator = function () {
|
|
283
|
+
return {
|
|
284
|
+
w: i,
|
|
285
|
+
m: f
|
|
286
|
+
};
|
|
287
|
+
})();
|
|
288
|
+
}
|
|
289
|
+
function _regeneratorDefine(e, r, n, t) {
|
|
290
|
+
var i = Object.defineProperty;
|
|
291
|
+
try {
|
|
292
|
+
i({}, "", {});
|
|
293
|
+
} catch (e) {
|
|
294
|
+
i = 0;
|
|
295
|
+
}
|
|
296
|
+
_regeneratorDefine = function (e, r, n, t) {
|
|
297
|
+
function o(r, n) {
|
|
298
|
+
_regeneratorDefine(e, r, function (e) {
|
|
299
|
+
return this._invoke(r, n, e);
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
r ? i ? i(e, r, {
|
|
303
|
+
value: n,
|
|
304
|
+
enumerable: !t,
|
|
305
|
+
configurable: !t,
|
|
306
|
+
writable: !t
|
|
307
|
+
}) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
|
|
308
|
+
}, _regeneratorDefine(e, r, n, t);
|
|
309
|
+
}
|
|
310
|
+
function _setPrototypeOf(t, e) {
|
|
311
|
+
return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
|
|
312
|
+
return t.__proto__ = e, t;
|
|
313
|
+
}, _setPrototypeOf(t, e);
|
|
314
|
+
}
|
|
315
|
+
function _slicedToArray(r, e) {
|
|
316
|
+
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
317
|
+
}
|
|
318
|
+
function _toConsumableArray(r) {
|
|
319
|
+
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
|
|
320
|
+
}
|
|
321
|
+
function _toPrimitive(t, r) {
|
|
322
|
+
if ("object" != typeof t || !t) return t;
|
|
323
|
+
var e = t[Symbol.toPrimitive];
|
|
324
|
+
if (void 0 !== e) {
|
|
325
|
+
var i = e.call(t, r);
|
|
326
|
+
if ("object" != typeof i) return i;
|
|
327
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
328
|
+
}
|
|
329
|
+
return ("string" === r ? String : Number)(t);
|
|
330
|
+
}
|
|
331
|
+
function _toPropertyKey(t) {
|
|
332
|
+
var i = _toPrimitive(t, "string");
|
|
333
|
+
return "symbol" == typeof i ? i : i + "";
|
|
334
|
+
}
|
|
335
|
+
function _unsupportedIterableToArray(r, a) {
|
|
336
|
+
if (r) {
|
|
337
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
338
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
339
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
var _excluded$3 = ["output"],
|
|
344
|
+
_excluded2 = ["output"],
|
|
345
|
+
_excluded3 = ["static", "headers"];
|
|
346
|
+
var mergeWebpackConfig = function mergeWebpackConfig(first, second) {
|
|
347
|
+
if (!first) return second;
|
|
348
|
+
if (!second) return first;
|
|
349
|
+
var firstOutput = first.output,
|
|
350
|
+
restFirst = _objectWithoutProperties(first, _excluded$3);
|
|
351
|
+
var secondOutput = second.output,
|
|
352
|
+
restSecond = _objectWithoutProperties(second, _excluded2);
|
|
353
|
+
var output = firstOutput || secondOutput;
|
|
354
|
+
if (lang.isObject(firstOutput) && lang.isObject(secondOutput)) {
|
|
355
|
+
output = _objectSpread2(_objectSpread2({}, firstOutput), secondOutput);
|
|
356
|
+
}
|
|
357
|
+
return _objectSpread2(_objectSpread2({
|
|
358
|
+
output: output
|
|
359
|
+
}, restFirst), restSecond);
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* 合并多个 devServer 配置
|
|
364
|
+
* @param configs
|
|
365
|
+
* @returns
|
|
366
|
+
*/
|
|
367
|
+
var mergeServerConfig = function mergeServerConfig() {
|
|
368
|
+
var result = {
|
|
369
|
+
static: [],
|
|
370
|
+
headers: {}
|
|
371
|
+
};
|
|
372
|
+
for (var _len = arguments.length, configs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
373
|
+
configs[_key] = arguments[_key];
|
|
374
|
+
}
|
|
375
|
+
configs.forEach(function (config) {
|
|
376
|
+
if (!config) return;
|
|
377
|
+
var staticConfig = config.static,
|
|
378
|
+
headers = config.headers,
|
|
379
|
+
otherConfig = _objectWithoutProperties(config, _excluded3);
|
|
380
|
+
if (lang.isArray(result.static) && lang.isArray(staticConfig)) {
|
|
381
|
+
var _result$static;
|
|
382
|
+
(_result$static = result.static).push.apply(_result$static, _toConsumableArray(staticConfig));
|
|
383
|
+
}
|
|
384
|
+
if (headers) {
|
|
385
|
+
result.headers = _objectSpread2(_objectSpread2({}, result.headers), headers);
|
|
386
|
+
}
|
|
387
|
+
Object.assign(result, otherConfig);
|
|
388
|
+
});
|
|
389
|
+
return result;
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
var Compiler = /*#__PURE__*/function (_CompilerBase) {
|
|
393
|
+
function Compiler() {
|
|
394
|
+
var _this;
|
|
395
|
+
_classCallCheck(this, Compiler);
|
|
396
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
397
|
+
args[_key] = arguments[_key];
|
|
398
|
+
}
|
|
399
|
+
_this = _callSuper(this, Compiler, [].concat(args));
|
|
400
|
+
_defineProperty(_this, "context", /*#__PURE__*/function () {
|
|
401
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(webpackConfig) {
|
|
402
|
+
var compiler;
|
|
403
|
+
return _regenerator().w(function (_context2) {
|
|
404
|
+
while (1) switch (_context2.n) {
|
|
405
|
+
case 0:
|
|
406
|
+
compiler = webpack.webpack(mergeWebpackConfig(_this.initOptions, webpackConfig));
|
|
407
|
+
return _context2.a(2, {
|
|
408
|
+
rebuild: function rebuild() {
|
|
409
|
+
return new Promise(function (resolve, reject) {
|
|
410
|
+
compiler.run(function (err, stats) {
|
|
411
|
+
if (err) return reject(err);
|
|
412
|
+
resolve({
|
|
413
|
+
Error: err,
|
|
414
|
+
Stats: stats
|
|
415
|
+
});
|
|
416
|
+
});
|
|
417
|
+
});
|
|
418
|
+
},
|
|
419
|
+
cancel: function () {
|
|
420
|
+
var _cancel = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
421
|
+
return _regenerator().w(function (_context) {
|
|
422
|
+
while (1) switch (_context.n) {
|
|
423
|
+
case 0:
|
|
424
|
+
helper.cLog.warn('build', 'empty', 'Webpack compiler cancel is empty implementation.');
|
|
425
|
+
return _context.a(2);
|
|
426
|
+
}
|
|
427
|
+
}, _callee);
|
|
428
|
+
}));
|
|
429
|
+
function cancel() {
|
|
430
|
+
return _cancel.apply(this, arguments);
|
|
431
|
+
}
|
|
432
|
+
return cancel;
|
|
433
|
+
}()
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
}, _callee2);
|
|
437
|
+
}));
|
|
438
|
+
return function (_x) {
|
|
439
|
+
return _ref.apply(this, arguments);
|
|
440
|
+
};
|
|
441
|
+
}());
|
|
442
|
+
_defineProperty(_this, "inOutMap", /*#__PURE__*/function () {
|
|
443
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(inputOutputMap) {
|
|
444
|
+
var entry, output;
|
|
445
|
+
return _regenerator().w(function (_context3) {
|
|
446
|
+
while (1) switch (_context3.n) {
|
|
447
|
+
case 0:
|
|
448
|
+
// 构造多入口对象
|
|
449
|
+
entry = {};
|
|
450
|
+
Object.entries(inputOutputMap).forEach(function (_ref3) {
|
|
451
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
452
|
+
input = _ref4[0],
|
|
453
|
+
output = _ref4[1];
|
|
454
|
+
entry[output] = input;
|
|
455
|
+
});
|
|
456
|
+
output = {
|
|
457
|
+
path: 'dist',
|
|
458
|
+
filename: '[name].js'
|
|
459
|
+
};
|
|
460
|
+
return _context3.a(2, _this.build({
|
|
461
|
+
entry: entry,
|
|
462
|
+
output: output
|
|
463
|
+
}));
|
|
464
|
+
}
|
|
465
|
+
}, _callee3);
|
|
466
|
+
}));
|
|
467
|
+
return function (_x2) {
|
|
468
|
+
return _ref2.apply(this, arguments);
|
|
469
|
+
};
|
|
470
|
+
}());
|
|
471
|
+
_defineProperty(_this, "input", /*#__PURE__*/function () {
|
|
472
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(input) {
|
|
473
|
+
return _regenerator().w(function (_context4) {
|
|
474
|
+
while (1) switch (_context4.n) {
|
|
475
|
+
case 0:
|
|
476
|
+
return _context4.a(2, {
|
|
477
|
+
output: function output(_output) {
|
|
478
|
+
return _this.build({
|
|
479
|
+
entry: input,
|
|
480
|
+
output: _output
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
}, _callee4);
|
|
486
|
+
}));
|
|
487
|
+
return function (_x3) {
|
|
488
|
+
return _ref5.apply(this, arguments);
|
|
489
|
+
};
|
|
490
|
+
}());
|
|
491
|
+
_defineProperty(_this, "build", /*#__PURE__*/function () {
|
|
492
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(webpackConfig) {
|
|
493
|
+
return _regenerator().w(function (_context5) {
|
|
494
|
+
while (1) switch (_context5.n) {
|
|
495
|
+
case 0:
|
|
496
|
+
return _context5.a(2, new Promise(function (resolve, reject) {
|
|
497
|
+
webpack.webpack(mergeWebpackConfig(_this.initOptions, webpackConfig), function (err, stats) {
|
|
498
|
+
if (err) return reject(err);
|
|
499
|
+
resolve({
|
|
500
|
+
Error: err,
|
|
501
|
+
Stats: stats
|
|
502
|
+
});
|
|
503
|
+
});
|
|
504
|
+
}));
|
|
505
|
+
}
|
|
506
|
+
}, _callee5);
|
|
507
|
+
}));
|
|
508
|
+
return function (_x4) {
|
|
509
|
+
return _ref6.apply(this, arguments);
|
|
510
|
+
};
|
|
511
|
+
}());
|
|
512
|
+
_defineProperty(_this, "watch", function (watchOptions, webpackConfig) {
|
|
513
|
+
var cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : lang.noop;
|
|
514
|
+
var compiler = webpack.webpack(mergeWebpackConfig(_this.initOptions, webpackConfig));
|
|
515
|
+
return compiler.watch(watchOptions || {}, cb);
|
|
516
|
+
});
|
|
517
|
+
_defineProperty(_this, "server", /*#__PURE__*/function () {
|
|
518
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(serverOptions, webpackConfig) {
|
|
519
|
+
var compiler, tempSrvConfig, open, port, host, devServer;
|
|
520
|
+
return _regenerator().w(function (_context6) {
|
|
521
|
+
while (1) switch (_context6.n) {
|
|
522
|
+
case 0:
|
|
523
|
+
compiler = webpack.webpack(mergeWebpackConfig(_this.initOptions, webpackConfig));
|
|
524
|
+
tempSrvConfig = mergeServerConfig(serverOptions, _this.initOptions.devServer);
|
|
525
|
+
open = tempSrvConfig.open, port = tempSrvConfig.port, host = tempSrvConfig.host;
|
|
526
|
+
devServer = new WebpackDevServer(mergeServerConfig(_objectSpread2(_objectSpread2({}, tempSrvConfig), {}, {
|
|
527
|
+
open: false
|
|
528
|
+
})), compiler);
|
|
529
|
+
_context6.n = 1;
|
|
530
|
+
return devServer.start();
|
|
531
|
+
case 1:
|
|
532
|
+
if (open) {
|
|
533
|
+
openBrowser("http://".concat(host, ":").concat(port));
|
|
534
|
+
}
|
|
535
|
+
return _context6.a(2, devServer);
|
|
536
|
+
}
|
|
537
|
+
}, _callee6);
|
|
538
|
+
}));
|
|
539
|
+
return function (_x5, _x6) {
|
|
540
|
+
return _ref7.apply(this, arguments);
|
|
541
|
+
};
|
|
542
|
+
}());
|
|
543
|
+
return _this;
|
|
544
|
+
}
|
|
545
|
+
_inherits(Compiler, _CompilerBase);
|
|
546
|
+
return _createClass(Compiler);
|
|
547
|
+
}(helper.CompilerBase);
|
|
548
|
+
|
|
549
|
+
var _excluded$2 = ["port"];
|
|
550
|
+
var getDevServer = function getDevServer(serviceConfig) {
|
|
551
|
+
var configPort = serviceConfig.port,
|
|
552
|
+
extServiceConfig = _objectWithoutProperties(serviceConfig, _excluded$2);
|
|
553
|
+
var host = '127.0.0.1';
|
|
554
|
+
return _objectSpread2(_objectSpread2({
|
|
555
|
+
host: host,
|
|
556
|
+
// 地址
|
|
557
|
+
open: false,
|
|
558
|
+
// 是否自动打开,关闭
|
|
559
|
+
setupExitSignals: true,
|
|
560
|
+
// 允许在 SIGINT 和 SIGTERM 信号时关闭开发服务器和退出进程。
|
|
561
|
+
compress: false,
|
|
562
|
+
// gzip压缩,开发环境不开启,提升热更新速度
|
|
563
|
+
hot: true,
|
|
564
|
+
// 开启热更新
|
|
565
|
+
historyApiFallback: true,
|
|
566
|
+
// 解决history路由404问题
|
|
567
|
+
// 托管静态资源public文件夹
|
|
568
|
+
static: [{
|
|
569
|
+
directory: filePro.resolveCwd('./public')
|
|
570
|
+
}, {
|
|
571
|
+
directory: filePro.resolveCwd('./dist')
|
|
572
|
+
}],
|
|
573
|
+
headers: {
|
|
574
|
+
'Access-Control-Allow-Origin': '*'
|
|
575
|
+
}
|
|
576
|
+
}, extServiceConfig), {}, {
|
|
577
|
+
port: configPort || '7777'
|
|
578
|
+
});
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
var getDevtool = function getDevtool(envParams, devtoolConfig) {
|
|
582
|
+
if (devtoolConfig) return devtoolConfig;
|
|
583
|
+
var action = envParams.action;
|
|
584
|
+
if (action === 'server') {
|
|
585
|
+
/**
|
|
586
|
+
* eval | [inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map
|
|
587
|
+
* 开发环境推荐:eval-cheap-module-source-map
|
|
588
|
+
* - 本地开发首次打包慢点没关系,因为 eval 缓存的原因, 热更新会很快
|
|
589
|
+
* - 开发中,我们每行代码不会写的太长,只需要定位到行就行,所以加上 cheap
|
|
590
|
+
* - 我们希望能够找到源代码的错误,而不是打包后的,所以需要加上 module
|
|
591
|
+
*/
|
|
592
|
+
return 'eval-cheap-module-source-map';
|
|
593
|
+
}
|
|
594
|
+
return 'source-map';
|
|
595
|
+
};
|
|
596
|
+
|
|
597
|
+
var scriptEntryList = ['index', 'src/index'];
|
|
598
|
+
var scriptFileTypeList = ['.ts', '.js', '.tsx', '.jsx'];
|
|
599
|
+
var htmlEntryList = ['index.html', 'public/index.html'];
|
|
600
|
+
|
|
601
|
+
var getEntry = function getEntry(params, input) {
|
|
602
|
+
if (input) return input;
|
|
603
|
+
var workRootDir = params.workRootDir;
|
|
604
|
+
var pList = scriptEntryList.reduce(function (pre, f) {
|
|
605
|
+
scriptFileTypeList.forEach(function (e) {
|
|
606
|
+
pre.push('./' + f + e);
|
|
607
|
+
});
|
|
608
|
+
return pre;
|
|
609
|
+
}, []);
|
|
610
|
+
var rightFile = filePro.lookupFile(pList, workRootDir);
|
|
611
|
+
if (!rightFile) {
|
|
612
|
+
helper.cLog.warn('dora-wr', 'getEntry', '需要有一个入口文件 index 或者 src/index');
|
|
613
|
+
process.exit();
|
|
614
|
+
}
|
|
615
|
+
return rightFile;
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
var getExternals = function getExternals(externals) {
|
|
619
|
+
if (externals) return externals;
|
|
620
|
+
return [];
|
|
621
|
+
};
|
|
622
|
+
|
|
623
|
+
var getMode = function getMode(envParams, modeConfig) {
|
|
624
|
+
if (modeConfig) return modeConfig;
|
|
625
|
+
var action = envParams.action;
|
|
626
|
+
return action === 'server' ? 'development' : 'production';
|
|
627
|
+
};
|
|
628
|
+
|
|
629
|
+
var dirname = filePro.getDirname(({ url: (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)) }));
|
|
630
|
+
var packageRootDir = filePro.getPackageRoot(dirname);
|
|
631
|
+
var cliNodeModulesDir = path.join(packageRootDir, 'node_modules');
|
|
632
|
+
var presetHtmlTemplate = path.join(packageRootDir, 'lib/preset/html/dev-preset.html');
|
|
633
|
+
|
|
634
|
+
var getBabelConfig = function getBabelConfig() {
|
|
635
|
+
return _objectSpread2({
|
|
636
|
+
babelrc: false,
|
|
637
|
+
configFile: false,
|
|
638
|
+
compact: false,
|
|
639
|
+
cwd: filePro.getNodeModulesDir(dirname)
|
|
640
|
+
}, presetBabel.reactBabelPreset());
|
|
641
|
+
};
|
|
642
|
+
|
|
643
|
+
var cssLoader = filePro.requireResolve((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)), 'css-loader');
|
|
644
|
+
var postcssLoader = filePro.requireResolve((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)), 'postcss-loader');
|
|
645
|
+
var styleLoader = filePro.requireResolve((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)), 'style-loader');
|
|
646
|
+
var babelLoader = filePro.requireResolve((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)), 'babel-loader');
|
|
647
|
+
var lessLoader = filePro.requireResolve((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)), 'less-loader');
|
|
648
|
+
var sassLoader = filePro.requireResolve((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)), 'sass-loader');
|
|
649
|
+
var postcssPresetEnv = filePro.requireResolve((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href)), 'postcss-preset-env');
|
|
650
|
+
|
|
651
|
+
var getCssBaseLoader = function getCssBaseLoader(envParams, options) {
|
|
652
|
+
var action = envParams.action;
|
|
653
|
+
var _ref = options || {},
|
|
654
|
+
postcssPluginExtra = _ref.postcssPluginExtra;
|
|
655
|
+
var baseCssLoaderList = [cssLoader, {
|
|
656
|
+
loader: postcssLoader,
|
|
657
|
+
options: {
|
|
658
|
+
postcssOptions: {
|
|
659
|
+
plugins: [[postcssPresetEnv]].concat(_toConsumableArray(postcssPluginExtra || []))
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}];
|
|
663
|
+
|
|
664
|
+
// dev环境使用style-loader
|
|
665
|
+
if (action === 'server') {
|
|
666
|
+
baseCssLoaderList.unshift({
|
|
667
|
+
loader: styleLoader
|
|
668
|
+
});
|
|
669
|
+
} else {
|
|
670
|
+
baseCssLoaderList.unshift({
|
|
671
|
+
loader: MiniCssExtractPlugin.loader
|
|
672
|
+
});
|
|
673
|
+
}
|
|
674
|
+
return baseCssLoaderList;
|
|
675
|
+
};
|
|
676
|
+
|
|
677
|
+
var getReactModulePreset = function getReactModulePreset(envParams, options) {
|
|
678
|
+
var publicCss = getCssBaseLoader(envParams, options);
|
|
679
|
+
var bableConfig = getBabelConfig();
|
|
680
|
+
var module = {
|
|
681
|
+
rules: [{
|
|
682
|
+
oneOf: [{
|
|
683
|
+
test: /\.(js|mjs|jsx|ts|tsx)$/,
|
|
684
|
+
/**
|
|
685
|
+
* 外部依赖中,有的模块 module = 'module',
|
|
686
|
+
* 但是import文件没有后缀名,导致的报错,
|
|
687
|
+
* 这里忽略,自动补全后缀名
|
|
688
|
+
*/
|
|
689
|
+
resolve: {
|
|
690
|
+
fullySpecified: false // 允许省略后缀
|
|
691
|
+
},
|
|
692
|
+
// exclude: /node_modules/,
|
|
693
|
+
use: [{
|
|
694
|
+
loader: babelLoader,
|
|
695
|
+
options: bableConfig
|
|
696
|
+
}]
|
|
697
|
+
}, {
|
|
698
|
+
test: /\.css$/,
|
|
699
|
+
use: _toConsumableArray(publicCss)
|
|
700
|
+
}, {
|
|
701
|
+
test: /\.less$/,
|
|
702
|
+
use: [].concat(_toConsumableArray(publicCss), [lessLoader])
|
|
703
|
+
}, {
|
|
704
|
+
test: /\.s[ac]ss$/,
|
|
705
|
+
use: [].concat(_toConsumableArray(publicCss), [sassLoader])
|
|
706
|
+
}, {
|
|
707
|
+
test: /\.(jpe?g|png|gif|svg)$/i,
|
|
708
|
+
type: 'asset',
|
|
709
|
+
// 一般会转换为 "asset/resource"
|
|
710
|
+
generator: {
|
|
711
|
+
filename: 'img/[name]_[hash:8][ext]' // 独立的配置
|
|
712
|
+
},
|
|
713
|
+
parser: {
|
|
714
|
+
dataUrlCondition: {
|
|
715
|
+
maxSize: 8 * 1024 // 8kb (低于8kb都会压缩成 base64)
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
},
|
|
719
|
+
// 字体文件
|
|
720
|
+
{
|
|
721
|
+
test: /\.(otf|eot|woff2?|ttf|svg)$/i,
|
|
722
|
+
type: 'asset',
|
|
723
|
+
// 一般会转换为 "asset/inline"
|
|
724
|
+
generator: {
|
|
725
|
+
filename: 'icon/[name]_[hash:8][ext]' // 独立的配置
|
|
726
|
+
},
|
|
727
|
+
parser: {
|
|
728
|
+
dataUrlCondition: {
|
|
729
|
+
maxSize: 2 * 1024 // 2kb (低于2kb都会压缩)
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
}]
|
|
733
|
+
}]
|
|
734
|
+
};
|
|
735
|
+
return module;
|
|
736
|
+
};
|
|
737
|
+
|
|
738
|
+
var getOptimization = function getOptimization(params) {
|
|
739
|
+
var minimize = params.minimize;
|
|
740
|
+
if (!minimize) {
|
|
741
|
+
return {
|
|
742
|
+
minimize: false
|
|
743
|
+
};
|
|
744
|
+
}
|
|
745
|
+
return {
|
|
746
|
+
minimize: minimize,
|
|
747
|
+
minimizer: [new TerserPlugin({
|
|
748
|
+
extractComments: false
|
|
749
|
+
})]
|
|
750
|
+
};
|
|
751
|
+
};
|
|
752
|
+
|
|
753
|
+
var _excluded$1 = ["path", "filename"];
|
|
754
|
+
var getOutput = function getOutput(envParams, output) {
|
|
755
|
+
var workRootDir = envParams.workRootDir;
|
|
756
|
+
var _ref = output || {},
|
|
757
|
+
path$1 = _ref.path,
|
|
758
|
+
filename = _ref.filename,
|
|
759
|
+
extOutput = _objectWithoutProperties(_ref, _excluded$1);
|
|
760
|
+
return _objectSpread2({
|
|
761
|
+
filename: filename || 'js/[name].[contenthash].js',
|
|
762
|
+
path: path$1 && path.isAbsolute(path$1) ? path$1 : path.join(workRootDir, path$1 || 'dist'),
|
|
763
|
+
clean: true,
|
|
764
|
+
publicPath: '/'
|
|
765
|
+
}, extOutput);
|
|
766
|
+
};
|
|
767
|
+
|
|
768
|
+
var _excluded = ["minimize", "template"];
|
|
769
|
+
var getHtmlWebpackPlugin = function getHtmlWebpackPlugin(params) {
|
|
770
|
+
var minimize = params.minimize,
|
|
771
|
+
template = params.template,
|
|
772
|
+
extParams = _objectWithoutProperties(params, _excluded);
|
|
773
|
+
return new HtmlWebpackPlugin(_objectSpread2({
|
|
774
|
+
title: 'webpack5-react-ts',
|
|
775
|
+
filename: 'index.html',
|
|
776
|
+
// 复制 'index.html' 文件,并自动引入打包输出的所有资源(js/css)
|
|
777
|
+
template: template || presetHtmlTemplate,
|
|
778
|
+
inject: true,
|
|
779
|
+
// 自动注入静态资源
|
|
780
|
+
hash: true,
|
|
781
|
+
cache: false,
|
|
782
|
+
// 压缩html资源
|
|
783
|
+
minify: minimize ? {
|
|
784
|
+
removeAttributeQuotes: true,
|
|
785
|
+
collapseWhitespace: true,
|
|
786
|
+
//去空格
|
|
787
|
+
removeComments: true,
|
|
788
|
+
// 去注释
|
|
789
|
+
minifyJS: true,
|
|
790
|
+
// 在脚本元素和事件属性中缩小JavaScript(使用UglifyJS)
|
|
791
|
+
minifyCSS: true // 缩小CSS样式元素和样式属性
|
|
792
|
+
} : false
|
|
793
|
+
}, extParams));
|
|
794
|
+
};
|
|
795
|
+
|
|
796
|
+
function extractEntryFiles(entry) {
|
|
797
|
+
// 处理常见 entry 形式:string | string[] | { [name]: string | string[] | { import: ... } }
|
|
798
|
+
var files = [];
|
|
799
|
+
var _push = function push(v) {
|
|
800
|
+
if (!v) return;
|
|
801
|
+
if (typeof v === 'string') files.push(v);else if (Array.isArray(v)) v.forEach(_push);else if (typeof v === 'object') {
|
|
802
|
+
// 对象可能是 { import: '...' } 或 { import: ['...'] }
|
|
803
|
+
// 也可能是其它 webpack entry 描述符
|
|
804
|
+
// 尝试提取 import 字段
|
|
805
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
806
|
+
var obj = v;
|
|
807
|
+
if (obj.import) _push(obj.import);else {
|
|
808
|
+
// 可能是 nested object of entry points
|
|
809
|
+
Object.values(obj).forEach(_push);
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
};
|
|
813
|
+
_push(entry);
|
|
814
|
+
return files;
|
|
815
|
+
}
|
|
816
|
+
var TsconfigPlugin = /*#__PURE__*/function () {
|
|
817
|
+
function TsconfigPlugin(workRootDir) {
|
|
818
|
+
_classCallCheck(this, TsconfigPlugin);
|
|
819
|
+
_defineProperty(this, "workRootDir", void 0);
|
|
820
|
+
this.workRootDir = workRootDir;
|
|
821
|
+
}
|
|
822
|
+
return _createClass(TsconfigPlugin, [{
|
|
823
|
+
key: "apply",
|
|
824
|
+
value: function apply(compiler) {
|
|
825
|
+
var _this = this;
|
|
826
|
+
// 使用 beforeRun.tapPromise 以 async/await 方式在构建前完成 I/O
|
|
827
|
+
compiler.hooks.beforeRun.tapPromise('TsconfigPlugin', /*#__PURE__*/function () {
|
|
828
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(comp) {
|
|
829
|
+
var _ref2, entry, entryFiles, hasTs;
|
|
830
|
+
return _regenerator().w(function (_context) {
|
|
831
|
+
while (1) switch (_context.p = _context.n) {
|
|
832
|
+
case 0:
|
|
833
|
+
_context.p = 0;
|
|
834
|
+
entry = (_ref2 = comp.options && comp.options.entry) !== null && _ref2 !== void 0 ? _ref2 : {};
|
|
835
|
+
entryFiles = extractEntryFiles(entry); // 如果 entry 是函数/动态生成,entryFiles 可能为空,保守处理
|
|
836
|
+
hasTs = entryFiles.some(function (f) {
|
|
837
|
+
return /\.(ts|tsx)$/.test(path.extname(String(f)));
|
|
838
|
+
});
|
|
839
|
+
if (hasTs) {
|
|
840
|
+
_context.n = 1;
|
|
841
|
+
break;
|
|
842
|
+
}
|
|
843
|
+
return _context.a(2);
|
|
844
|
+
case 1:
|
|
845
|
+
_context.n = 2;
|
|
846
|
+
return helper.insertTsconfig(_this.workRootDir);
|
|
847
|
+
case 2:
|
|
848
|
+
_context.n = 4;
|
|
849
|
+
break;
|
|
850
|
+
case 3:
|
|
851
|
+
_context.p = 3;
|
|
852
|
+
_context.v;
|
|
853
|
+
helper.cLog.error('init', 'error', '自动注入 tsconfig.json 失败');
|
|
854
|
+
case 4:
|
|
855
|
+
return _context.a(2);
|
|
856
|
+
}
|
|
857
|
+
}, _callee, null, [[0, 3]]);
|
|
858
|
+
}));
|
|
859
|
+
return function (_x) {
|
|
860
|
+
return _ref.apply(this, arguments);
|
|
861
|
+
};
|
|
862
|
+
}());
|
|
863
|
+
}
|
|
864
|
+
}]);
|
|
865
|
+
}();
|
|
866
|
+
|
|
867
|
+
var getTsconfigPlugin = function getTsconfigPlugin(envParams) {
|
|
868
|
+
return new TsconfigPlugin(envParams.workRootDir);
|
|
869
|
+
};
|
|
870
|
+
|
|
871
|
+
var ProgressPlugin = webpack.ProgressPlugin;
|
|
872
|
+
var getReactPluginsPreset = function getReactPluginsPreset(envParams, options) {
|
|
873
|
+
var action = envParams.action;
|
|
874
|
+
var isDevelopment = action === 'server';
|
|
875
|
+
var WebpackBundleAnalyzerOptions = options.WebpackBundleAnalyzerOptions,
|
|
876
|
+
HtmlWebpackPluginOptions = options.HtmlWebpackPluginOptions,
|
|
877
|
+
minimize = options.minimize;
|
|
878
|
+
|
|
879
|
+
// html入口文件路径
|
|
880
|
+
var rightFile = filePro.lookupFile(htmlEntryList);
|
|
881
|
+
if (!rightFile) {
|
|
882
|
+
helper.cLog.warn('init', 'not_found', '未找到 html 入口文件,将使用预设配置');
|
|
883
|
+
}
|
|
884
|
+
var plugins = [getTsconfigPlugin(envParams)];
|
|
885
|
+
if (!isDevelopment) {
|
|
886
|
+
plugins.push(new ProgressPlugin({
|
|
887
|
+
activeModules: false,
|
|
888
|
+
entries: true,
|
|
889
|
+
modules: true,
|
|
890
|
+
modulesCount: 5000,
|
|
891
|
+
profile: false,
|
|
892
|
+
dependencies: true,
|
|
893
|
+
dependenciesCount: 10000,
|
|
894
|
+
percentBy: 'entries'
|
|
895
|
+
}));
|
|
896
|
+
}
|
|
897
|
+
if (action !== 'lib') {
|
|
898
|
+
plugins.push(getHtmlWebpackPlugin(_objectSpread2({
|
|
899
|
+
minimize: minimize,
|
|
900
|
+
template: rightFile || undefined
|
|
901
|
+
}, HtmlWebpackPluginOptions)));
|
|
902
|
+
}
|
|
903
|
+
if (!isDevelopment) {
|
|
904
|
+
plugins.push(new WebpackBarPlugin(), new MiniCssExtractPlugin({
|
|
905
|
+
filename: 'css/main.[contenthash].css'
|
|
906
|
+
}));
|
|
907
|
+
}
|
|
908
|
+
if (WebpackBundleAnalyzerOptions) {
|
|
909
|
+
plugins.push(new WebpackBundleAnalyzer.BundleAnalyzerPlugin(WebpackBundleAnalyzerOptions));
|
|
910
|
+
}
|
|
911
|
+
return plugins.filter(Boolean);
|
|
912
|
+
};
|
|
913
|
+
|
|
914
|
+
/**
|
|
915
|
+
* 获取webpack的resolve配置
|
|
916
|
+
* @param userResolve
|
|
917
|
+
* @returns
|
|
918
|
+
*/
|
|
919
|
+
var getResolve = function getResolve(resolveConfig) {
|
|
920
|
+
var resolveObj = _objectSpread2({
|
|
921
|
+
extensions: ['.ts', '.tsx', '.js', '.jsx']
|
|
922
|
+
}, resolveConfig);
|
|
923
|
+
return resolveObj;
|
|
924
|
+
};
|
|
925
|
+
|
|
926
|
+
var getResolveLoader = function getResolveLoader() {
|
|
927
|
+
return {
|
|
928
|
+
modules: [cliNodeModulesDir],
|
|
929
|
+
extensions: ['.js', '.json'],
|
|
930
|
+
mainFields: ['loader', 'main']
|
|
931
|
+
};
|
|
932
|
+
};
|
|
933
|
+
|
|
934
|
+
var createCompiler = function createCompiler(config) {
|
|
935
|
+
return webpack(config);
|
|
936
|
+
};
|
|
937
|
+
|
|
938
|
+
var Ctx = /*#__PURE__*/function () {
|
|
939
|
+
function Ctx(configCtx) {
|
|
940
|
+
_classCallCheck(this, Ctx);
|
|
941
|
+
_defineProperty(this, "configCtx", void 0);
|
|
942
|
+
_defineProperty(this, "webpackConfig", {});
|
|
943
|
+
_defineProperty(this, "devServerConfig", {});
|
|
944
|
+
_defineProperty(this, "envParams", {
|
|
945
|
+
action: 'build',
|
|
946
|
+
workRootDir: filePro.getCwd()
|
|
947
|
+
});
|
|
948
|
+
this.configCtx = configCtx;
|
|
949
|
+
}
|
|
950
|
+
return _createClass(Ctx, [{
|
|
951
|
+
key: "updateEnvParams",
|
|
952
|
+
value: function updateEnvParams(argv) {
|
|
953
|
+
this.envParams = _objectSpread2(_objectSpread2({}, this.envParams), argv);
|
|
954
|
+
}
|
|
955
|
+
}, {
|
|
956
|
+
key: "updateWebpackConfig",
|
|
957
|
+
value: function updateWebpackConfig(config) {
|
|
958
|
+
this.webpackConfig = _objectSpread2(_objectSpread2({}, this.webpackConfig), config);
|
|
959
|
+
}
|
|
960
|
+
}, {
|
|
961
|
+
key: "updateDevServerConfig",
|
|
962
|
+
value: function updateDevServerConfig(config) {
|
|
963
|
+
this.devServerConfig = _objectSpread2(_objectSpread2({}, this.devServerConfig), config);
|
|
964
|
+
}
|
|
965
|
+
}, {
|
|
966
|
+
key: "getDoraConfig",
|
|
967
|
+
value: function getDoraConfig() {
|
|
968
|
+
return this.configCtx.getDoraConfig();
|
|
969
|
+
}
|
|
970
|
+
}, {
|
|
971
|
+
key: "geTDoraConfigWebpack",
|
|
972
|
+
value: function geTDoraConfigWebpack() {
|
|
973
|
+
return this.configCtx.getDoraConfig().webpackConfig || {};
|
|
974
|
+
}
|
|
975
|
+
}]);
|
|
976
|
+
}();
|
|
977
|
+
|
|
978
|
+
var presetWebpackConfig = {
|
|
979
|
+
host: '127.0.0.1',
|
|
980
|
+
open: true,
|
|
981
|
+
// 是否自动打开,关闭
|
|
982
|
+
setupExitSignals: true,
|
|
983
|
+
// 允许在 SIGINT 和 SIGTERM 信号时关闭开发服务器和退出进程。
|
|
984
|
+
compress: false,
|
|
985
|
+
// gzip压缩,开发环境不开启,提升热更新速度
|
|
986
|
+
hot: true,
|
|
987
|
+
// 开启热更新
|
|
988
|
+
historyApiFallback: true,
|
|
989
|
+
// 解决history路由404问题
|
|
990
|
+
static: [{
|
|
991
|
+
directory: filePro.resolveCwd('./public') // 托管静态资源public文件夹
|
|
992
|
+
}, {
|
|
993
|
+
directory: filePro.resolveCwd('./dist') // 托管静态资源public文件夹
|
|
994
|
+
}],
|
|
995
|
+
headers: {
|
|
996
|
+
'Access-Control-Allow-Origin': '*'
|
|
997
|
+
},
|
|
998
|
+
port: '8082'
|
|
999
|
+
};
|
|
1000
|
+
|
|
1001
|
+
/**
|
|
1002
|
+
* 启动服务
|
|
1003
|
+
* @param options
|
|
1004
|
+
* @param compiler
|
|
1005
|
+
*/
|
|
1006
|
+
var service = /*#__PURE__*/function () {
|
|
1007
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(options, compiler) {
|
|
1008
|
+
var tempSrvConfig, open, port, host, devServer;
|
|
1009
|
+
return _regenerator().w(function (_context) {
|
|
1010
|
+
while (1) switch (_context.n) {
|
|
1011
|
+
case 0:
|
|
1012
|
+
tempSrvConfig = mergeServerConfig(presetWebpackConfig, options);
|
|
1013
|
+
open = tempSrvConfig.open, port = tempSrvConfig.port, host = tempSrvConfig.host;
|
|
1014
|
+
devServer = new WebpackDevServer(mergeServerConfig(_objectSpread2(_objectSpread2({}, tempSrvConfig), {}, {
|
|
1015
|
+
open: false
|
|
1016
|
+
})), compiler);
|
|
1017
|
+
_context.n = 1;
|
|
1018
|
+
return devServer.start();
|
|
1019
|
+
case 1:
|
|
1020
|
+
if (open) {
|
|
1021
|
+
openBrowser("http://".concat(host, ":").concat(port));
|
|
1022
|
+
}
|
|
1023
|
+
case 2:
|
|
1024
|
+
return _context.a(2);
|
|
1025
|
+
}
|
|
1026
|
+
}, _callee);
|
|
1027
|
+
}));
|
|
1028
|
+
return function service(_x, _x2) {
|
|
1029
|
+
return _ref.apply(this, arguments);
|
|
1030
|
+
};
|
|
1031
|
+
}();
|
|
1032
|
+
|
|
1033
|
+
exports.Compiler = Compiler;
|
|
1034
|
+
exports.Ctx = Ctx;
|
|
1035
|
+
exports.babelLoader = babelLoader;
|
|
1036
|
+
exports.build = build;
|
|
1037
|
+
exports.createCompiler = createCompiler;
|
|
1038
|
+
exports.cssLoader = cssLoader;
|
|
1039
|
+
exports.getBabelConfig = getBabelConfig;
|
|
1040
|
+
exports.getCssBaseLoader = getCssBaseLoader;
|
|
1041
|
+
exports.getDevServer = getDevServer;
|
|
1042
|
+
exports.getDevtool = getDevtool;
|
|
1043
|
+
exports.getEntry = getEntry;
|
|
1044
|
+
exports.getExternals = getExternals;
|
|
1045
|
+
exports.getHtmlWebpackPlugin = getHtmlWebpackPlugin;
|
|
1046
|
+
exports.getMode = getMode;
|
|
1047
|
+
exports.getOptimization = getOptimization;
|
|
1048
|
+
exports.getOutput = getOutput;
|
|
1049
|
+
exports.getReactModulePreset = getReactModulePreset;
|
|
1050
|
+
exports.getReactPluginsPreset = getReactPluginsPreset;
|
|
1051
|
+
exports.getResolve = getResolve;
|
|
1052
|
+
exports.getResolveLoader = getResolveLoader;
|
|
1053
|
+
exports.getTsconfigPlugin = getTsconfigPlugin;
|
|
1054
|
+
exports.lessLoader = lessLoader;
|
|
1055
|
+
exports.mergeServerConfig = mergeServerConfig;
|
|
1056
|
+
exports.mergeWebpackConfig = mergeWebpackConfig;
|
|
1057
|
+
exports.postcssLoader = postcssLoader;
|
|
1058
|
+
exports.postcssPresetEnv = postcssPresetEnv;
|
|
1059
|
+
exports.sassLoader = sassLoader;
|
|
1060
|
+
exports.service = service;
|
|
1061
|
+
exports.styleLoader = styleLoader;
|