mtcute/packages/create-bot/src/dependencies.ts

56 lines
1.7 KiB
TypeScript

import { UserConfig } from './cli.js'
import { MtcuteFeature } from './features/types.js'
import { exec } from './utils.js'
export function buildDependenciesList(config: UserConfig) {
const dependencies = ['@mtcute/node']
const devDepdenencies = ['dotenv-cli']
if (config.features.includes(MtcuteFeature.Dispatcher)) {
dependencies.push('@mtcute/dispatcher')
}
if (config.features.includes(MtcuteFeature.I18n)) {
dependencies.push('@mtcute/i18n')
}
if (config.features.includes(MtcuteFeature.NativeAddon)) {
dependencies.push('@mtcute/crypto-node')
}
if (config.features.includes(MtcuteFeature.TypeScript)) {
devDepdenencies.push('typescript', '@types/node')
}
if (config.features.includes(MtcuteFeature.Linters)) {
devDepdenencies.push(
'husky',
'lint-staged',
'eslint',
'eslint-config-prettier',
'eslint-plugin-ascii',
'eslint-plugin-import',
'eslint-plugin-simple-import-sort',
)
if (config.features.includes(MtcuteFeature.TypeScript)) {
devDepdenencies.push(
'eslint-import-resolver-typescript',
'@typescript-eslint/eslint-plugin',
'@typescript-eslint/parser',
)
}
}
return {
dependencies,
devDepdenencies,
}
}
export async function installDependencies(cwd: string, config: UserConfig) {
const { dependencies, devDepdenencies } = buildDependenciesList(config)
await exec(cwd, 'pnpm', 'add', ...dependencies)
await exec(cwd, 'pnpm', 'add', '--save-dev', ...devDepdenencies)
}