piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
99 lines • 4.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildPiralDefaults = void 0;
exports.buildPiral = buildPiral;
const path_1 = require("path");
const types_1 = require("../types");
const common_1 = require("../common");
exports.buildPiralDefaults = {
entry: './',
target: './dist',
publicUrl: '/',
logLevel: types_1.LogLevels.info,
fresh: false,
minify: true,
type: common_1.allName,
subdir: true,
sourceMaps: true,
watch: false,
contentHash: true,
optimizeModules: false,
};
async function buildPiral(baseDir = process.cwd(), options = {}) {
const { entry = exports.buildPiralDefaults.entry, target = exports.buildPiralDefaults.target, publicUrl: originalPublicUrl = exports.buildPiralDefaults.publicUrl, logLevel = exports.buildPiralDefaults.logLevel, minify = exports.buildPiralDefaults.minify, sourceMaps = exports.buildPiralDefaults.sourceMaps, watch = exports.buildPiralDefaults.watch, contentHash = exports.buildPiralDefaults.contentHash, subdir = exports.buildPiralDefaults.subdir, fresh = exports.buildPiralDefaults.fresh, type = exports.buildPiralDefaults.type, optimizeModules = exports.buildPiralDefaults.optimizeModules, _ = {}, hooks = {}, bundlerName, } = options;
(0, common_1.ensure)('baseDir', baseDir, 'string');
(0, common_1.ensure)('publicUrl', originalPublicUrl, 'string');
(0, common_1.ensure)('entry', entry, 'string');
(0, common_1.ensure)('_', _, 'object');
(0, common_1.ensure)('hooks', hooks, 'object');
(0, common_1.ensure)('target', target, 'string');
const publicUrl = (0, common_1.normalizePublicUrl)(originalPublicUrl);
const fullBase = (0, path_1.resolve)(process.cwd(), baseDir);
const useSubdir = type === 'all' || subdir;
(0, common_1.setLogLevel)(logLevel);
await hooks.onBegin?.({ options, fullBase });
(0, common_1.progress)('Reading configuration ...');
const entryFiles = await (0, common_1.retrievePiralRoot)(fullBase, entry);
const { name, root, ignored, externals, scripts, emulator = common_1.emulatorPackageName, } = await (0, common_1.retrievePiletsInfo)(entryFiles);
const piralInstances = [name];
const dest = (0, common_1.getDestination)(entryFiles, (0, path_1.resolve)(fullBase, target));
await (0, common_1.checkCliCompatibility)(root);
(0, common_1.validateSharedDependencies)(externals);
if (fresh) {
(0, common_1.progress)('Removing output directory ...');
await (0, common_1.removeDirectory)(dest.outDir);
}
// either take the explicit type or find out the implicit / default one
const emulatorType = type === common_1.allName || type === common_1.emulatorName ? emulator : type.replace(`${common_1.emulatorName}-`, '');
// only applies to an explicit emulator target (e.g., "emulator-website") or to "all" / "emulator" with the setting from the piral.json
if ([common_1.emulatorSourcesName, common_1.emulatorPackageName, common_1.emulatorWebsiteName].includes(emulatorType)) {
const targetDir = useSubdir ? (0, path_1.join)(dest.outDir, common_1.emulatorName) : dest.outDir;
await (0, common_1.triggerBuildEmulator)({
root,
logLevel,
bundlerName,
emulatorType,
hooks,
targetDir,
ignored,
externals,
entryFiles,
piralInstances,
optimizeModules,
sourceMaps,
watch,
scripts,
contentHash,
outFile: dest.outFile,
_,
});
(0, common_1.logReset)();
}
// either 'release' or 'all'
if (type === common_1.releaseName || type === common_1.allName) {
const targetDir = useSubdir ? (0, path_1.join)(dest.outDir, common_1.releaseName) : dest.outDir;
await (0, common_1.triggerBuildShell)({
targetDir,
logLevel,
bundlerName,
contentHash,
externals,
ignored,
minify,
optimizeModules,
publicUrl,
outFile: dest.outFile,
root,
sourceMaps,
watch,
hooks,
entryFiles,
piralInstances,
scripts,
_,
});
(0, common_1.logReset)();
}
await hooks.onEnd?.({ root });
}
//# sourceMappingURL=build-piral.js.map