import { readFileSync, writeFileSync } from 'fs'; import { resolve } from 'path'; export interface PackageJSON { name: string; version: string; description: string; publishConfig: { registry: string; }; scripts: { [key: string]: string; }; } export interface OptionsJSON { auto: boolean; global: boolean; [key: string]: unknown; } export interface RegistryJSON { registry: string; _auth: string; email: string; packageRegistry: string; } export interface NrcJSON { [key: string]: RegistryJSON; } export type NpmJson = RegistryJSON | NrcJSON; /** * 获取用户目录 */ export const USER_HOME = process.env.HOME || process.env.USERPROFILE; /** * 读取指定路径下 json 文件 * @param filename json 文件的路径 */ export function readJsonFile(filename: string): T { return JSON.parse(readFileSync(filename, { encoding: 'utf-8', flag: 'r' })); } /** * 覆写指定路径下的 json 文件 * @param filename json 文件的路径 * @param content json 内容 */ export function writeJsonFile(filename: string, content: T): void { writeFileSync(filename, JSON.stringify(content, null, 2)); } /** * 获取项目绝对路径 * @param projectName 项目名 * @param projectPath 项目路径 默认 process.cwd() */ export function getProjectPath( projectName: string, projectPath?: string, ): string { const path = projectPath || process.cwd(); return resolve(path, projectName); } /** * 打印信息 * @param msg 信息 */ export function printMsg(msg: string): void { console.log(msg); }