UNPKG

nextdevkit

Version:

A Comprehensive CLI Toolkit for Next.js Development

47 lines (46 loc) 2.13 kB
import chalk from 'chalk'; import fs from 'fs-extra'; import path from 'path'; import isNextJsRoot from '../utils/isNextJsRoot.js'; import isTypeScriptProject from '../utils/isTypescriptProject.js'; import resolveProjectPath from '../utils/resolveProjectPath.js'; const initConfig = async () => { const projectPath = await resolveProjectPath(); await isNextJsRoot(projectPath); await createConfigFile(projectPath); }; const createConfigFile = async (projectPath) => { const configFileName = isTypeScriptProject(projectPath) ? 'tsconfig.json' : 'jsconfig.json'; const projectConfigPath = path.join(projectPath, configFileName); const srcFolderPath = path.join(projectPath, 'src'); const defaultPath = (await fs.pathExists(srcFolderPath)) ? ['./src/*'] : ['./*']; const projectConfig = (await fs.pathExists(projectConfigPath)) ? await fs.readJson(projectConfigPath) : { compilerOptions: { paths: {} } }; projectConfig.compilerOptions = projectConfig.compilerOptions || {}; projectConfig.compilerOptions.paths = projectConfig.compilerOptions.paths || {}; const alias = projectConfig.compilerOptions.paths['@/*'] ? projectConfig.compilerOptions.paths['@/*'][0].replace('/*', '') : '@'; if (!projectConfig.compilerOptions.paths['@/*']) { projectConfig.compilerOptions.paths['@/*'] = defaultPath; await fs.writeJson(projectConfigPath, projectConfig, { spaces: 2 }); console.log(`${configFileName} updated with path alias.`); } const configFilePath = path.join(projectPath, 'nextdevkit.json'); if (!(await fs.pathExists(configFilePath))) { const configData = { aliases: { components: `${alias}/components`, utils: `${alias}/utils`, hooks: `${alias}/hooks`, lib: `${alias}/lib`, context: `${alias}/context` } }; await fs.writeJson(configFilePath, configData, { spaces: 2 }); console.log(chalk.green('Config file created successfully!')); } }; export default initConfig;