UNPKG

@gobvoz/cli-fsd

Version:

Utility to create slices in Feature-Sliced Design methodology. Expect, that you have already installed `react`, `typescript`, `@reduxjs/toolkit`, `@reduxjs/toolkit-query`, `i18n` and use `module.scss` structure.

38 lines (29 loc) 1.23 kB
import path from 'path'; import { existsSync as folderExist } from 'fs'; import createModel from './create-model.js'; import createUI from './create-ui.js'; import createPublicApi from './create-public-api.js'; import createLazyLoader from './create-lazy-loader.js'; import createLazyPublicApi from './create-lazy-public-api.js'; import createFolder from '../utils/create-folder.js'; import log from '../utils/log.js'; const createTemplate = async (layer, sliceName) => { if (folderExist(path.resolve('src', layer, sliceName.kebabCase))) { log.error(`Could not create '${layer}/${sliceName.kebabCase}' directory`); log.error(`folder already exists`); process.exit(); } await createFolder(path.resolve('src')); await createFolder(path.resolve('src', layer)); await createFolder(path.resolve('src', layer, sliceName.kebabCase)); await createModel(layer, sliceName); await createUI(layer, sliceName); if (layer === 'pages') { await createLazyLoader(layer, sliceName); await createLazyPublicApi(layer, sliceName); } else { await createPublicApi(layer, sliceName); } log.done(`Successfully created '${layer}/${sliceName.kebabCase}' template`); }; export default createTemplate;