import path from 'path' import fs from 'fs-extra' import { initializeGit, runPkgManagerInstall } from '@laughing-cli/utils' import type { Installer } from './index' export const lintInstaller: Installer = async ( context, ) => { const gitDirExists = fs.pathExistsSync(path.resolve(context.rootPath, '.git')) if (!gitDirExists) await initializeGit(context.rootPath) const pwExists = fs.pathExistsSync(path.resolve(context.rootPath, 'pnpm-workspace.yaml')) await runPkgManagerInstall({ projectDir: context.rootPath, cmdList: [ `pnpm i -D ${pwExists ? '-w' : ''} husky lint-staged@13.0.3 commitlint-config-cz@0.13.3 commitizen@4.2.4 cz-customizable@6.9.0 @commitlint/cli@17.0.3 @laughing-cli/eslint-config @laughing-cli/stylelint-config`, 'npx husky install', 'npm set-script prepare "husky install"', 'npx --no-install husky add .husky/pre-commit \'npx --no-install lint-staged\'', 'npx --no-install husky add .husky/commit-msg \'npx commitlint --edit $1\'', ], }) const commitAssetDir = path.join(context.templatePath, 'addons/lint') await fs.copy(path.join(commitAssetDir), path.join(context.rootPath)) const jsonAssets = fs.readJSONSync(path.join(context.rootPath, 'package.json')) Object.assign(jsonAssets, { 'config': { commitizen: { path: 'node_modules/cz-customizable', }, }, 'cz-customizable': { config: '.cz-config.js', }, }) fs.writeJSONSync(path.join(context.rootPath, 'package.json'), jsonAssets, { spaces: 2 }) }