1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = build;
|
7 |
|
8 | var _package = require("../package");
|
9 |
|
10 | var _project = require("../project");
|
11 |
|
12 | var _path = _interopRequireDefault(require("path"));
|
13 |
|
14 | var _rollup = require("./rollup");
|
15 |
|
16 | var _aliases = require("./aliases");
|
17 |
|
18 | var logger = _interopRequireWildcard(require("../logger"));
|
19 |
|
20 | var fs = _interopRequireWildcard(require("fs-extra"));
|
21 |
|
22 | var _messages = require("../messages");
|
23 |
|
24 | var _errors = require("../errors");
|
25 |
|
26 | var _config = require("./config");
|
27 |
|
28 | var _workerClient = require("../worker-client");
|
29 |
|
30 | var _babel = require("../rollup-plugins/babel");
|
31 |
|
32 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
|
33 |
|
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
35 |
|
36 | let browserPattern = /typeof\s+(window|document)/;
|
37 |
|
38 | async function buildPackage(pkg, aliases) {
|
39 | let configs = (0, _config.getRollupConfigs)(pkg, aliases);
|
40 | await Promise.all([fs.remove(_path.default.join(pkg.directory, "dist")), ...pkg.entrypoints.map(entrypoint => {
|
41 | return fs.remove(_path.default.join(entrypoint.directory, "dist"));
|
42 | })]);
|
43 |
|
44 | let hasCheckedBrowser = pkg.entrypoints[0].browser !== null;
|
45 | await Promise.all(configs.map(async ({
|
46 | config,
|
47 | outputs
|
48 | }) => {
|
49 |
|
50 | let bundle = await (0, _rollup.rollup)(config);
|
51 | let result = await Promise.all(outputs.map(outputConfig => {
|
52 | return bundle.write(outputConfig);
|
53 | }));
|
54 | const nodeDevOutput = result[0].output;
|
55 |
|
56 | if (!hasCheckedBrowser) {
|
57 | let allCode = nodeDevOutput.map(({
|
58 | code
|
59 | }) => code).join("\n");
|
60 | hasCheckedBrowser = true;
|
61 |
|
62 | if (browserPattern.test(allCode)) {
|
63 | throw (async () => {
|
64 | let shouldAddBrowserField = await _messages.confirms.addBrowserField(pkg);
|
65 |
|
66 | if (shouldAddBrowserField) {
|
67 | pkg.setFieldOnEntrypoints("browser");
|
68 | await Promise.all(pkg.entrypoints.map(x => x.save()));
|
69 | } else {
|
70 | throw new _errors.FatalError(_messages.errors.deniedWriteBrowserField, pkg.name);
|
71 | }
|
72 | })();
|
73 | }
|
74 | }
|
75 | }));
|
76 | }
|
77 |
|
78 | async function retryableBuild(pkg, aliases) {
|
79 | try {
|
80 | await buildPackage(pkg, aliases);
|
81 | } catch (err) {
|
82 | if (err instanceof Promise) {
|
83 | await err;
|
84 | await retryableBuild(pkg, aliases);
|
85 | return;
|
86 | }
|
87 |
|
88 | if (err instanceof _errors.FatalError) {
|
89 | throw err;
|
90 | }
|
91 |
|
92 | throw new _errors.UnexpectedBuildError(err, pkg.name);
|
93 | }
|
94 | }
|
95 |
|
96 | async function build(directory) {
|
97 |
|
98 | try {
|
99 | (0, _workerClient.createWorker)();
|
100 | await _babel.hasherPromise;
|
101 | let project = await _project.Project.create(directory);
|
102 | logger.info("building bundles!");
|
103 | let aliases = (0, _aliases.getAliases)(project);
|
104 | await Promise.all(project.packages.map(pkg => retryableBuild(pkg, aliases)));
|
105 | logger.success("built bundles!");
|
106 | } finally {
|
107 | (0, _workerClient.destroyWorker)();
|
108 | }
|
109 | } |
\ | No newline at end of file |