@nx-plugins/slidev
Version:
The Nx Plugin for Slidev that contains executors, generators, and utilities for managing Slidev applications within an Nx workspace.
78 lines • 3.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.filePathPrefix = exports.slidevProjectSchematic = void 0;
const tslib_1 = require("tslib");
const devkit_1 = require("@nrwl/devkit");
const generator_1 = require("../init/generator");
const create_files_1 = require("./lib/create-files");
const schemaDefaults = {};
function normalizeOptions(tree, options) {
const { appsDir } = (0, devkit_1.getWorkspaceLayout)(tree);
const projectName = filePathPrefix(options.directory ? `${options.directory}-${options.name}` : options.name);
const projectRoot = options.directory
? (0, devkit_1.joinPathFragments)(appsDir, (0, devkit_1.names)(options.directory).fileName, options.name)
: (0, devkit_1.joinPathFragments)(appsDir, options.name);
return Object.assign(Object.assign(Object.assign({}, schemaDefaults), options), { projectName,
projectRoot, offsetFromRoot: (0, devkit_1.offsetFromRoot)(projectRoot) });
}
function slidevProjectGenerator(tree, schema) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const options = normalizeOptions(tree, schema);
const installTask = (0, generator_1.default)(tree, {
skipPackageJson: options.skipPackageJson,
});
(0, devkit_1.addProjectConfiguration)(tree, options.name, {
root: options.projectRoot,
sourceRoot: (0, devkit_1.joinPathFragments)(options.projectRoot, 'src'),
projectType: 'application',
targets: {
build: {
executor: '@nx-plugins/slidev:build',
outputs: [(0, devkit_1.joinPathFragments)((0, devkit_1.normalizePath)(options.projectRoot))],
options: {
entry: 'src/slides.md',
/* We need to increase one level due to slidev does not have consistency between the way to get the output on
build and export command
*/
output: `${options.offsetFromRoot}../dist/${options.name}/${options.name}-slides`,
},
},
serve: {
executor: '@nx-plugins/slidev:slidev',
outputs: [(0, devkit_1.joinPathFragments)((0, devkit_1.normalizePath)(options.projectRoot))],
options: {
entry: 'src/slides.md',
},
},
export: {
executor: '@nx-plugins/slidev:export',
outputs: [(0, devkit_1.joinPathFragments)((0, devkit_1.normalizePath)(options.projectRoot))],
options: {
entry: 'src/slides.md',
output: `${options.offsetFromRoot}dist/${options.name}/${options.name}-slides`,
},
},
format: {
executor: '@nx-plugins/slidev:export',
outputs: [(0, devkit_1.joinPathFragments)((0, devkit_1.normalizePath)(options.projectRoot))],
options: {
entry: 'src/slides.md',
},
},
},
tags: [],
}, options.standaloneConfig);
(0, create_files_1.createFiles)(tree, options);
if (!schema.skipFormat) {
yield (0, devkit_1.formatFiles)(tree);
}
return installTask;
});
}
exports.default = slidevProjectGenerator;
exports.slidevProjectSchematic = (0, devkit_1.convertNxGenerator)(slidevProjectGenerator);
function filePathPrefix(directory) {
return `${(0, devkit_1.names)(directory).fileName}`.replace(new RegExp('/', 'g'), '-');
}
exports.filePathPrefix = filePathPrefix;
//# sourceMappingURL=generator.js.map