UNPKG

5.21 kBJavaScriptView Raw
1"use strict";
2/**
3 * © 2017 Liferay, Inc. <https://liferay.com>
4 *
5 * SPDX-License-Identifier: LGPL-3.0-or-later
6 */
7var __importDefault = (this && this.__importDefault) || function (mod) {
8 return (mod && mod.__esModule) ? mod : { "default": mod };
9};
10var __importStar = (this && this.__importStar) || function (mod) {
11 if (mod && mod.__esModule) return mod;
12 var result = {};
13 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
14 result["default"] = mod;
15 return result;
16};
17Object.defineProperty(exports, "__esModule", { value: true });
18const fs_extra_1 = __importDefault(require("fs-extra"));
19const project_1 = __importDefault(require("liferay-npm-build-tools-common/lib/project"));
20const path_1 = __importDefault(require("path"));
21const pretty_time_1 = __importDefault(require("pretty-time"));
22const read_json_sync_1 = __importDefault(require("read-json-sync"));
23const semver_1 = __importDefault(require("semver"));
24const dependencies_1 = require("./dependencies");
25const insight = __importStar(require("./insight"));
26const jar_1 = __importDefault(require("./jar"));
27const log = __importStar(require("./log"));
28const manifest_1 = __importDefault(require("./manifest"));
29const report_1 = __importDefault(require("./report"));
30const copy_1 = __importDefault(require("./steps/copy"));
31const rules_1 = __importDefault(require("./steps/rules"));
32const transform_1 = __importDefault(require("./steps/transform"));
33/** Default entry point for the liferay-npm-bundler */
34function default_1(argv) {
35 const versionsInfo = project_1.default.versionsInfo;
36 if (argv.version) {
37 versionsInfo.forEach((value, key) => {
38 console.log(`"${key}":`, JSON.stringify(value, null, 2));
39 });
40 return;
41 }
42 report_1.default.versionsInfo(versionsInfo);
43 if (project_1.default.misc.noTracking) {
44 run();
45 }
46 else {
47 log.debug('The tool is sending usage statistics to our remote servers.');
48 insight.init().then(run);
49 }
50}
51exports.default = default_1;
52/** Real tool execution */
53function run() {
54 try {
55 const start = process.hrtime();
56 // Get root package
57 const rootPkg = dependencies_1.getRootPkg();
58 report_1.default.rootPackage(rootPkg);
59 // Compute dependency packages
60 const depPkgsMap = dependencies_1.addPackageDependencies({}, project_1.default.dir.asNative, project_1.default.copy.includedDependencies);
61 const depPkgs = Object.values(depPkgsMap).filter(pkg => !pkg.isRoot);
62 report_1.default.dependencies(depPkgs);
63 reportLinkedDependencies(project_1.default.pkgJson);
64 // Report rules config
65 report_1.default.rulesConfig(project_1.default.rules.config);
66 // Warn about incremental builds
67 if (manifest_1.default.loadedFromFile) {
68 report_1.default.warn('This report is from an incremental build: some steps may be ' +
69 'missing (you may remove the output directory to force a ' +
70 'full build).');
71 }
72 // Do things
73 copy_1.default(rootPkg, depPkgs)
74 .then(() => rules_1.default(rootPkg, depPkgs))
75 .then(() => transform_1.default(rootPkg, depPkgs))
76 .then(() => manifest_1.default.save())
77 .then(() => (project_1.default.jar.supported ? jar_1.default() : undefined))
78 .then(() => {
79 // Report and show execution time
80 const hrtime = process.hrtime(start);
81 report_1.default.executionTime(hrtime);
82 log.info(`Bundling took ${pretty_time_1.default(hrtime)}`);
83 // Send report analytics data
84 report_1.default.sendAnalytics();
85 // Write report if requested
86 if (project_1.default.misc.reportFile) {
87 fs_extra_1.default.writeFileSync(project_1.default.misc.reportFile.asNative, report_1.default.toHtml());
88 log.info(`Report written to ${project_1.default.misc.reportFile.asNative}`);
89 }
90 else if (report_1.default.warningsPresent) {
91 log.debug('The build has emitted some warning messages.');
92 }
93 })
94 .catch(abort);
95 }
96 catch (err) {
97 abort(err);
98 }
99}
100/** Report linked dependencies of a given package.json */
101function reportLinkedDependencies(pkgJson) {
102 ['dependencies', 'devDependencies'].forEach(scope => {
103 if (pkgJson[scope] != null) {
104 Object.keys(pkgJson[scope]).forEach(depName => {
105 const depVersion = pkgJson[scope][depName];
106 if (semver_1.default.validRange(depVersion) == null) {
107 const depPkgJsonPath = path_1.default.join('node_modules', depName, 'package.json');
108 const depPkgJson = read_json_sync_1.default(depPkgJsonPath);
109 pkgJson[scope][depName] = depPkgJson.version;
110 report_1.default.linkedDependency(depName, depVersion, depPkgJson.version);
111 }
112 });
113 }
114 });
115}
116/** Abort execution after showing error message */
117function abort(err) {
118 log.error(`
119
120${err.stack}
121
122`);
123 process.exit(1);
124}