UNPKG

decentrand

Version:

Decentraland CLI developer tool.

108 lines (103 loc) 4.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.main = exports.help = void 0; const arg_1 = __importDefault(require("arg")); const chalk_1 = __importDefault(require("chalk")); const assert_1 = require("assert"); const Decentraland_1 = require("../lib/Decentraland"); const installDependencies_1 = __importDefault(require("../project/installDependencies")); const updateBundleDependenciesField_1 = __importDefault(require("../project/updateBundleDependenciesField")); const analytics_1 = require("../utils/analytics"); const moduleHelpers_1 = require("../utils/moduleHelpers"); const help = () => ` Usage: ${chalk_1.default.bold('dcl build [options]')} ${chalk_1.default.dim('Options:')} -h, --help Displays complete help -w, --watch Watch for file changes and build on change -p, --production Build without sourcemaps --skip-version-checks Skip the ECS and CLI version checks, avoid the warning message and launch anyway --skip-install Skip installing dependencies ${chalk_1.default.dim('Example:')} - Build your scene: ${chalk_1.default.green('$ dcl build')} `; exports.help = help; async function main() { const args = (0, arg_1.default)({ '--help': Boolean, '-h': '--help', '--watch': Boolean, '-w': '--watch', '--skip-version-checks': Boolean, '--production': Boolean, '-p': '--production', '--skip-install': Boolean }); const dcl = new Decentraland_1.Decentraland({ watch: args['--watch'] || args['-w'] || false, workingDir: process.cwd() }); const skipVersionCheck = args['--skip-version-checks']; const skipInstall = args['--skip-install']; const online = await (0, moduleHelpers_1.isOnline)(); const errors = []; for (const project of dcl.workspace.getAllProjects()) { const needDependencies = await project.needsDependencies(); if (needDependencies && !skipInstall) { if (online) { await (0, installDependencies_1.default)(project.getProjectWorkingDir(), false /* silent */); } else { (0, assert_1.fail)('This project can not start as you are offline and dependencies need to be installed.'); } } if (!skipVersionCheck) { await project.checkCLIandECSCompatibility(); } try { await (0, updateBundleDependenciesField_1.default)({ workDir: project.getProjectWorkingDir() }); } catch (err) { console.warn(`Unable to update bundle dependencies field.`, err); } if (await project.isTypescriptProject()) { try { await (0, moduleHelpers_1.buildTypescript)({ workingDir: project.getProjectWorkingDir(), watch: !!args['--watch'], production: !!args['--production'] }); } catch (err) { errors.push({ project, err }); } } } if (errors.length) { const projectList = errors.map((item) => item.project.getProjectWorkingDir()).join('\n\t'); throw new Error(`Error compiling (see logs above) the scenes: \n\t${projectList}`); } if (dcl.workspace.isSingleProject()) { const baseCoords = await dcl.workspace.getBaseCoords(); analytics_1.Analytics.buildScene({ projectHash: dcl.getProjectHash(), ecs: await dcl.workspace.getSingleProject().getEcsPackageVersion(), coords: baseCoords, isWorkspace: false }); } else { analytics_1.Analytics.buildScene({ projectHash: dcl.getProjectHash(), isWorkspace: true }); } return 0; } exports.main = main; //# sourceMappingURL=build.js.map