UNPKG

3.33 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 return new (P || (P = Promise))(function (resolve, reject) {
4 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7 step((generator = generator.apply(thisArg, _arguments || [])).next());
8 });
9};
10Object.defineProperty(exports, "__esModule", { value: true });
11const cascade_resolve_1 = require("./cascade-resolve");
12const webpack_entry_1 = require("@patternplate/webpack-entry");
13const webpack = require("webpack");
14const resolveFrom = require("resolve-from");
15const MemoryFS = require("memory-fs");
16const nodeExternals = require("webpack-node-externals");
17const resolve = (resolveFrom.silent || resolveFrom);
18function compiler(options) {
19 return __awaiter(this, void 0, void 0, function* () {
20 const TO_STRING_LOADER = resolve(__dirname, "to-string-loader");
21 const CSS_LOADER = resolve(__dirname, "css-loader");
22 const HTML_LOADER = resolve(__dirname, "html-loader");
23 const COVER = resolve(__dirname, "@patternplate/cover-client");
24 const DEMO = resolve(__dirname, "@patternplate/demo-client");
25 const PROBE = resolve(__dirname, "@patternplate/probe-client");
26 const fs = new MemoryFS();
27 const { config, cwd } = options;
28 const components = yield webpack_entry_1.webpackEntry(config.entry, { cwd });
29 const bases = [cwd, process.cwd()].filter(Boolean);
30 const render = cascade_resolve_1.cascadeResolve(config.render, { bases, cwd });
31 const mount = cascade_resolve_1.cascadeResolve(config.mount, { bases, cwd });
32 const entry = options.target === "node"
33 ? { components, render }
34 : {
35 components,
36 "cover-client": COVER,
37 demo: DEMO,
38 mount: mount,
39 probe: PROBE
40 };
41 if (typeof config.cover === "string") {
42 entry.cover = cascade_resolve_1.cascadeResolve(config.cover, { bases, cwd });
43 }
44 const compiler = webpack({
45 entry,
46 target: options.target,
47 externals: options.target === "node" ? [nodeExternals()] : [],
48 mode: "development",
49 module: {
50 rules: [
51 {
52 test: /\.css$/,
53 use: [TO_STRING_LOADER, CSS_LOADER]
54 },
55 {
56 test: /\.html$/,
57 use: [HTML_LOADER]
58 }
59 ]
60 },
61 output: {
62 library: "patternplate-[name]",
63 libraryTarget: options.target === "node" ? "commonjs2" : "window",
64 path: "/",
65 filename: `patternplate.${options.target}.[name].js`
66 }
67 });
68 compiler.outputFileSystem = fs;
69 return compiler;
70 });
71}
72exports.compiler = compiler;
73exports.default = compiler;
74//# sourceMappingURL=compiler.js.map
\No newline at end of file