frontity
Version:
Frontity cli and entry point to other packages
52 lines (51 loc) • 2.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const chalk_1 = __importDefault(require("chalk"));
const eventPromised_1 = require("../utils/eventPromised");
const path_1 = require("path");
const create_package_1 = require("../steps/create-package");
const steps_1 = require("../steps");
const createPackage = async (options, emit, reject) => {
const emitMessage = (message, step) => {
emit("message", message, step);
};
let step;
let dirExisted;
const { name, namespace, packagePath, projectPath } = options;
process.on("SIGINT", async () => {
if (typeof dirExisted !== "undefined")
await steps_1.revertProgress(dirExisted, packagePath);
});
try {
// 1. Create ./packages/[name] folder.
step = steps_1.ensureProjectDir(path_1.join(packagePath, "src"));
emitMessage(`Creating ${chalk_1.default.yellow(packagePath)} folder.`, step);
dirExisted = await step;
// 2. Creates `package.json`.
step = create_package_1.createPackageJson(name, namespace, projectPath, packagePath);
emitMessage(`Adding ${chalk_1.default.yellow("package.json")}.`, step);
await step;
// 3. Creates `src/index.js`.
step = create_package_1.createSrcIndexJs(name, namespace, projectPath, packagePath);
emitMessage(`Adding ${chalk_1.default.yellow("src/index.js")}.`, step);
await step;
// 4. Install package
step = create_package_1.installPackage(projectPath, packagePath);
emitMessage(`Installing package ${chalk_1.default.yellow(name)}.`, step);
await step;
}
catch (error) {
if (typeof dirExisted !== "undefined") {
await steps_1.revertProgress(dirExisted, packagePath);
}
reject(error);
}
};
exports.default = (options) =>
// EventPromised is a combination of EventEmitter and Promise
new eventPromised_1.EventPromised((resolve, reject, emit) => {
createPackage(options, emit, reject).then(resolve);
});