UNPKG

2.86 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const tslib_1 = require("tslib");
4const browser_sync_1 = tslib_1.__importDefault(require("browser-sync"));
5const compression_1 = tslib_1.__importDefault(require("compression"));
6const connect_history_api_fallback_1 = tslib_1.__importDefault(require("connect-history-api-fallback"));
7const interpret_1 = tslib_1.__importDefault(require("interpret"));
8const lodash_1 = require("lodash");
9const path_1 = tslib_1.__importDefault(require("path"));
10const utils_1 = require("./utils");
11const WebpackOptions_1 = require("./WebpackOptions");
12function registerCompiler(moduleDescriptor) {
13 if (moduleDescriptor) {
14 if (typeof moduleDescriptor === "string") {
15 require(moduleDescriptor);
16 }
17 else if (!Array.isArray(moduleDescriptor)) {
18 moduleDescriptor.register(require(moduleDescriptor.module));
19 }
20 else {
21 for (const moduleName of moduleDescriptor) {
22 if (moduleName) {
23 try {
24 registerCompiler(moduleName);
25 break;
26 }
27 catch (e) {
28 }
29 }
30 }
31 }
32 }
33}
34const createBrowserSyncOptions = (options) => {
35 const webpackConfigFile = path_1.default.join(process.cwd(), options.config);
36 const webpackConfigFileExt = path_1.default.extname(webpackConfigFile);
37 registerCompiler(interpret_1.default.extensions[webpackConfigFileExt]);
38 const webpackConfig = require(webpackConfigFile);
39 let middlewares = [];
40 if (options.historyApiFallback) {
41 middlewares = middlewares.concat(connect_history_api_fallback_1.default({
42 index: "/"
43 }));
44 }
45 if (options.webpack) {
46 middlewares = middlewares.concat(WebpackOptions_1.createMiddlewaresForWebpack(webpackConfig, options.index, options.hot));
47 }
48 if (options.compress) {
49 middlewares = middlewares.concat(compression_1.default({ level: 6 }));
50 }
51 if (options.proxy) {
52 return Object.assign(Object.assign({}, (lodash_1.get(webpackConfig, "devServer.browserSync"))), { proxy: {
53 target: options.proxy,
54 middleware: middlewares
55 } });
56 }
57 return Object.assign(Object.assign(Object.assign({}, (lodash_1.get(webpackConfig, "devServer.browserSync"))), (process.env.PORT ? ({
58 port: Number(process.env.PORT)
59 }) : {})), { server: {
60 baseDir: utils_1.getBaseDir(webpackConfig.output.path, webpackConfig.output.publicPath),
61 index: path_1.default.join(webpackConfig.output.publicPath || "/", options.index),
62 middleware: middlewares,
63 }, notify: false });
64};
65exports.create = (opts) => browser_sync_1.default(createBrowserSyncOptions(opts));