1 | "use strict";
|
2 | var __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 | };
|
10 | Object.defineProperty(exports, "__esModule", { value: true });
|
11 | const cascade_resolve_1 = require("./cascade-resolve");
|
12 | const webpack_entry_1 = require("@patternplate/webpack-entry");
|
13 | const webpack = require("webpack");
|
14 | const resolveFrom = require("resolve-from");
|
15 | const MemoryFS = require("memory-fs");
|
16 | const nodeExternals = require("webpack-node-externals");
|
17 | const resolve = (resolveFrom.silent || resolveFrom);
|
18 | function 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 | }
|
72 | exports.compiler = compiler;
|
73 | exports.default = compiler;
|
74 |
|
\ | No newline at end of file |