@windrun-huaiin/dev-scripts 6.5.0 → 6.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { loadConfig, validateConfig, checkTranslations, cleanTranslations, generateBlogIndex, Logger, DEFAULT_CONFIG, readJsonFile } from './chunk-YZIQVKKT.mjs';
2
+ import { loadConfig, validateConfig, checkTranslations, cleanTranslations, generateBlogIndex, Logger, DEFAULT_CONFIG, readJsonFile } from './chunk-5BCB7TCA.mjs';
3
3
  import { program } from 'commander';
4
4
  import { existsSync, unlinkSync, rmSync, readFileSync, writeFileSync, mkdirSync, statSync, readdirSync } from 'fs';
5
5
  import { resolve, join } from 'path';
@@ -156,13 +156,16 @@ async function generateNextjsArchitecture(config, cwd2 = typeof process !== "und
156
156
  const anotion = architectureConfig[node.name] || "";
157
157
  const displayName = depth === 0 && node.name === "." ? "ROOT" : node.name;
158
158
  if (node.type === "directory") {
159
- mdx2 += `${" ".repeat(depth)}<ZiaFolder name="${displayName}" anotion="${anotion}" defaultOpen>
159
+ if (!node.contents || node.contents.length === 0) {
160
+ mdx2 += `${" ".repeat(depth)}<ZiaFolder name="${displayName}" anotion="${anotion}" className="opacity-50" disabled/>
161
+ `;
162
+ } else {
163
+ mdx2 += `${" ".repeat(depth)}<ZiaFolder name="${displayName}" anotion="${anotion}" defaultOpen>
160
164
  `;
161
- if (node.contents && node.contents.length > 0) {
162
165
  mdx2 += renderTree2(node.contents, depth + 1, nodePath);
163
- }
164
- mdx2 += `${" ".repeat(depth)}</ZiaFolder>
166
+ mdx2 += `${" ".repeat(depth)}</ZiaFolder>
165
167
  `;
168
+ }
166
169
  } else if (node.type === "file") {
167
170
  mdx2 += `${" ".repeat(depth)}<ZiaFile name="${node.name}" anotion="${anotion}" href="" />
168
171
  `;
@@ -177,7 +180,7 @@ async function generateNextjsArchitecture(config, cwd2 = typeof process !== "und
177
180
  if (!existsSync(blogDir)) mkdirSync(blogDir, { recursive: true });
178
181
  const treeJsonPath = join(logsDir, "project_tree.json");
179
182
  logger.log(`Running tree command to generate ${treeJsonPath}`);
180
- execSync(`tree -a -J -I '.next|node_modules|logs|dist|pnpm-lock.yaml|turbo|.turbo|public|.cursor|.DS_Store' > ${treeJsonPath}`);
183
+ execSync(`tree -a -J -I '.next|node_modules|logs|dist|pnpm-lock.yaml|turbo|.turbo|public|.cursor|.DS_Store|.git' > ${treeJsonPath}`);
181
184
  const tree = readJsonFile(treeJsonPath);
182
185
  if (!tree) {
183
186
  logger.error("Failed to read tree JSON result!");
@@ -188,7 +191,7 @@ async function generateNextjsArchitecture(config, cwd2 = typeof process !== "und
188
191
  const frontmatter = `---
189
192
  title: About Project Structure
190
193
  description: Show all source code directories and files
191
- icon: GitMerge
194
+ icon: Gift
192
195
  date: ${getCurrentDateString()}
193
196
  ---
194
197
 
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/deep-clean.ts","../src/commands/easy-changeset.ts","../src/commands/generate-nextjs-architecture.ts","../src/cli.ts"],"names":["cwd","join","existsSync","renderTree","mdx","writeFileSync"],"mappings":"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","file":"cli.mjs","sourcesContent":["import { existsSync, statSync, rmSync, readdirSync, unlinkSync } from 'fs'\nimport { join, resolve } from 'path'\nimport { DevScriptsConfig } from '@dev-scripts/config/schema'\nimport { Logger } from '@dev-scripts/utils/logger'\n\ninterface CleanTarget {\n pattern: string\n description: string\n isFile?: boolean\n}\n\nconst MONOREPO_CLEAN_TARGETS: CleanTarget[] = [\n { pattern: 'node_modules', description: 'Root directory dependencies' },\n { pattern: 'packages/*/node_modules', description: 'Package dependencies' },\n { pattern: 'apps/*/node_modules', description: 'Application dependencies' },\n { pattern: 'apps/*/.next', description: 'Next.js cache' },\n { pattern: 'packages/*/dist', description: 'Package build artifacts' },\n { pattern: 'apps/*/dist', description: 'Application build artifacts' },\n { pattern: '.turbo', description: 'Root directory Turbo cache' },\n { pattern: 'packages/*/.turbo', description: 'Package Turbo cache' },\n { pattern: 'apps/*/.turbo', description: 'Application Turbo cache' },\n { pattern: 'pnpm-lock.yaml', description: 'pnpm lock file', isFile: true }\n]\n\nconst SINGLE_CLEAN_TARGETS: CleanTarget[] = [\n { pattern: 'node_modules', description: 'Root directory dependencies' },\n { pattern: '.next', description: 'Next.js cache' },\n { pattern: 'pnpm-lock.yaml', description: 'pnpm lock file', isFile: true }\n]\n\nfunction globDirsOrFiles(pattern: string, cwd: string, isFile?: boolean): string[] {\n if (!pattern.includes('*')) {\n const abs = resolve(cwd, pattern)\n if (isFile) {\n return existsSync(abs) ? [abs] : []\n }\n return existsSync(abs) && statSync(abs).isDirectory() ? [abs] : []\n }\n const [base, rest] = pattern.split('/*')\n const absBase = resolve(cwd, base)\n if (!existsSync(absBase) || !statSync(absBase).isDirectory()) return []\n const subdirs = readdirSync(absBase)\n return subdirs.map(d => join(absBase, d, rest.replace(/^[\\/]/, '')))\n .filter(p => existsSync(p) && (isFile ? true : statSync(p).isDirectory()))\n}\n\nexport async function deepClean(\n config: DevScriptsConfig,\n yes: boolean = false,\n cwd: string = typeof process !== 'undefined' ? process.cwd() : '.'\n): Promise<number> {\n const logger = new Logger(config)\n // Environment check, DO NOT EXECUTE IN PRODUCTION ENVIRONMENT\n if (process.env.NODE_ENV === 'production') {\n logger.error('❌ Production environment prohibits deep clean operations')\n logger.log(' If you need to clean, please set: NODE_ENV=development')\n logger.saveToFile('deep-clean.log', cwd)\n return 1\n }\n\n logger.warn('==============================')\n logger.warn(`‼️ Current working directory: ⭕ ${cwd} ⭕`)\n logger.warn('==============================')\n\n // Auto detect project type\n const isMonorepo = existsSync(resolve(cwd, 'pnpm-workspace.yaml'))\n const cleanTargets: CleanTarget[] = isMonorepo ? MONOREPO_CLEAN_TARGETS : SINGLE_CLEAN_TARGETS\n\n let totalToDelete: string[] = []\n let groupDeleteMap: Record<string, string[]> = {}\n\n for (const target of cleanTargets) {\n const found = globDirsOrFiles(target.pattern, cwd, target.isFile)\n groupDeleteMap[target.description] = found\n if (found.length === 0) {\n logger.info(`💯 ${target.description}: No need to clean`)\n } else {\n logger.log(`\\n[${target.description}]`)\n found.forEach(p => logger.warn(`👙 [Preview] ${p}`))\n totalToDelete.push(...found)\n }\n }\n\n if (totalToDelete.length === 0) {\n logger.success('No directories or files to clean.')\n logger.saveToFile('deep-clean.log', cwd)\n return 0\n }\n\n if (!yes) {\n logger.log('\\nIf you need to actually delete, please add --yes parameter.')\n logger.saveToFile('deep-clean.log', cwd)\n return 0\n }\n\n // Execute deletion, grouped print\n let deleted = 0\n for (const target of cleanTargets) {\n const items = groupDeleteMap[target.description] || []\n if (items.length > 0) {\n logger.log(`\\n[${target.description}]`)\n for (const p of items) {\n try {\n if (target.isFile) {\n unlinkSync(p)\n if (!existsSync(p)) {\n logger.success(`🍻 Deleted: ${p}`)\n deleted++\n } else {\n logger.error(`❌ Delete failed: ${p} (file still exists)`)\n }\n } else {\n rmSync(p, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 })\n if (!existsSync(p)) {\n logger.success(`🍻 Deleted: ${p}`)\n deleted++\n } else {\n logger.error(`❌ Delete failed: ${p} (directory still exists)`)\n }\n }\n } catch (e: any) {\n logger.error(`❌ Delete failed: ${p} (${e.message})`)\n }\n }\n }\n }\n logger.log(`\\n🍺 Total cleaned: ${deleted} directories or files.`)\n logger.saveToFile('deep-clean.log', cwd)\n return 0\n} ","import { existsSync, readFileSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nexport async function easyChangeset(cwd: string = typeof process !== 'undefined' ? process.cwd() : '.') {\n // Environment check, DO NOT EXECUTE IN PRODUCTION ENVIRONMENT\n if (process.env.NODE_ENV === 'production') {\n console.log('❌ Production environment prohibits deep clean operations')\n console.log(' If you need to clean, please set: NODE_ENV=development')\n return 1\n }\n\n console.log('==============================')\n console.log(`‼️ Current working directory: ⭕ ${cwd} ⭕`)\n console.log('==============================')\n \n const changesetDir = join(cwd, '.changeset')\n const mdxFile = join(changesetDir, 'd8-template.mdx')\n const mdFile = join(changesetDir, 'd8-template.md')\n\n if (!existsSync(changesetDir)) {\n console.log('❌ No .changeset directory found, skipping.')\n return 1\n }\n if (!existsSync(mdxFile)) {\n console.log('❌ No .changeset/d8-template.mdx file found, skipping.')\n return 1\n }\n try {\n const content = readFileSync(mdxFile, 'utf-8')\n writeFileSync(mdFile, content, 'utf-8')\n console.log('✅ Copied d8-template.mdx content to d8-template.md')\n return 0\n } catch (e: any) {\n console.log('❌ Copy failed:', e.message)\n return 1\n }\n} ","import { DevScriptsConfig, DEFAULT_CONFIG } from '@dev-scripts/config/schema'\nimport { readJsonFile } from '@dev-scripts/utils/file-scanner'\nimport { Logger } from '@dev-scripts/utils/logger'\nimport { execSync } from 'child_process'\nimport { existsSync, mkdirSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nfunction getCurrentDateString(): string {\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\nexport async function generateNextjsArchitecture(\n config: DevScriptsConfig,\n cwd: string = typeof process !== 'undefined' ? process.cwd() : '.'\n): Promise<number> {\n const logger = new Logger(config)\n try {\n // get logs directory and blog directory\n const logsDir = join(cwd, config.output?.logDir || 'logs')\n const blogDir = join(cwd, config.blog?.mdxDir || 'src/mdx/blog')\n if (!existsSync(logsDir)) mkdirSync(logsDir, { recursive: true })\n if (!existsSync(blogDir)) mkdirSync(blogDir, { recursive: true })\n\n // generate tree result to logs directory\n const treeJsonPath = join(logsDir, 'project_tree.json')\n logger.log(`Running tree command to generate ${treeJsonPath}`)\n execSync(`tree -a -J -I '.next|node_modules|logs|dist|pnpm-lock.yaml|turbo|.turbo|public|.cursor|.DS_Store' > ${treeJsonPath}`)\n\n // read tree result\n const tree = readJsonFile<any[]>(treeJsonPath)\n if (!tree) {\n logger.error('Failed to read tree JSON result!')\n return 1\n }\n // Merge config and user first\n const userConfig = config.architectureConfig || {}\n const architectureConfig = { ...(DEFAULT_CONFIG.architectureConfig || {}), ...userConfig }\n\n function renderTree(nodes: any[], depth = 0, parentPath: string = ''): string {\n let mdx = ''\n for (const node of nodes) {\n const nodePath = parentPath ? `${parentPath}/${node.name}` : node.name\n const anotion = architectureConfig[node.name] || ''\n // scan root directory name='ROOT'\n const displayName = (depth === 0 && node.name === '.') ? 'ROOT' : node.name\n if (node.type === 'directory') {\n mdx += `${' '.repeat(depth)}<ZiaFolder name=\"${displayName}\" anotion=\"${anotion}\" defaultOpen>\\n`\n if (node.contents && node.contents.length > 0) {\n mdx += renderTree(node.contents, depth + 1, nodePath)\n }\n mdx += `${' '.repeat(depth)}</ZiaFolder>\\n`\n } else if (node.type === 'file') {\n mdx += `${' '.repeat(depth)}<ZiaFile name=\"${node.name}\" anotion=\"${anotion}\" href=\"\" />\\n`\n }\n }\n return mdx\n }\n\n // generate frontmatter\n const frontmatter = `---\\ntitle: About Project Structure\\ndescription: Show all source code directories and files\\nicon: GitMerge\\ndate: ${getCurrentDateString()}\\n---\\n\\n## Quick Started\\n\\n`\n // generate mdx content\n const filesContent = renderTree(tree)\n const indentedFilesContent = filesContent.split('\\n').map(line => line ? ' ' + line : '').join('\\n')\n const mdx = frontmatter + '<Files>\\n' + indentedFilesContent + '</Files>\\n'\n // output to blog directory\n const outputMdxPath = join(blogDir, 'nextjs-architecture.mdx')\n writeFileSync(outputMdxPath, mdx)\n logger.success(`Successfully generated ${outputMdxPath}`)\n logger.saveToFile('generate-nextjs-architecture.log', cwd)\n return 0\n } catch (error) {\n logger.error(`Error generating nextjs architecture mdx: ${error}`)\n return 1\n }\n} ","#!/usr/bin/env node\n\nimport { program } from 'commander'\nimport { loadConfig, validateConfig } from '@dev-scripts/config'\nimport { checkTranslations } from '@dev-scripts/commands/check-translations'\nimport { cleanTranslations } from '@dev-scripts/commands/clean-translations'\nimport { generateBlogIndex } from '@dev-scripts/commands/generate-blog-index'\nimport { deepClean } from '@dev-scripts/commands/deep-clean'\nimport { easyChangeset } from '@dev-scripts/commands/easy-changeset'\nimport { generateNextjsArchitecture } from '@dev-scripts/commands/generate-nextjs-architecture'\n\n// get current working directory, ensure it works in Node.js environment\nconst cwd = typeof process !== 'undefined' ? process.cwd() : '.'\n\nprogram\n .name('dev-scripts')\n .description('development scripts for multi-language projects')\n .version('5.0.0')\n\nprogram\n .command('check-translations')\n .description('check the completeness and consistency of translation files')\n .option('-v, --verbose', 'show detailed logs', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n \n // apply verbose option after loading\n if (options.verbose) {\n config.output.verbose = true\n }\n \n validateConfig(config)\n \n const exitCode = await checkTranslations(config, cwd)\n \n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('clean-translations')\n .description('clean unused translation keys')\n .option('-v, --verbose', 'show detailed logs', false)\n .option('--remove', 'actually delete unused keys (default only show)', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n \n // apply verbose option after loading\n if (options.verbose) {\n config.output.verbose = true\n }\n \n validateConfig(config)\n \n const exitCode = await cleanTranslations(config, options.remove, cwd)\n \n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('generate-blog-index')\n .description('generate blog index file')\n .option('-v, --verbose', 'show detailed logs', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n \n // apply verbose option after loading\n if (options.verbose) {\n config.output.verbose = true\n }\n \n validateConfig(config)\n \n const exitCode = await generateBlogIndex(config, cwd)\n \n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('deep-clean')\n .description('clean all node_modules, dist, .next, .turbo and related caches in monorepo')\n .option('--yes', 'actually delete matched directories (default only preview)', false)\n .option('-v, --verbose', 'show detailed logs', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n if (options.verbose) {\n config.output.verbose = true\n }\n validateConfig(config)\n const exitCode = await deepClean(config, options.yes, cwd)\n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('easy-changeset')\n .description('copy .changeset/d8-template.mdx to .changeset/d8-template.md if both exist')\n .action(async () => {\n try {\n const exitCode = await easyChangeset(cwd)\n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('generate-nextjs-architecture')\n .description('generate nextjs-architecture.mdx for project structure')\n .option('-v, --verbose', 'show detailed logs', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n if (options.verbose) {\n config.output.verbose = true\n }\n validateConfig(config)\n const exitCode = await generateNextjsArchitecture(config, cwd)\n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\n// parse command line arguments\nif (typeof process !== 'undefined') {\n program.parse(process.argv)\n} "]}
1
+ {"version":3,"sources":["../src/commands/deep-clean.ts","../src/commands/easy-changeset.ts","../src/commands/generate-nextjs-architecture.ts","../src/cli.ts"],"names":["cwd","join","existsSync","renderTree","mdx","writeFileSync"],"mappings":"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","file":"cli.mjs","sourcesContent":["import { existsSync, statSync, rmSync, readdirSync, unlinkSync } from 'fs'\nimport { join, resolve } from 'path'\nimport { DevScriptsConfig } from '@dev-scripts/config/schema'\nimport { Logger } from '@dev-scripts/utils/logger'\n\ninterface CleanTarget {\n pattern: string\n description: string\n isFile?: boolean\n}\n\nconst MONOREPO_CLEAN_TARGETS: CleanTarget[] = [\n { pattern: 'node_modules', description: 'Root directory dependencies' },\n { pattern: 'packages/*/node_modules', description: 'Package dependencies' },\n { pattern: 'apps/*/node_modules', description: 'Application dependencies' },\n { pattern: 'apps/*/.next', description: 'Next.js cache' },\n { pattern: 'packages/*/dist', description: 'Package build artifacts' },\n { pattern: 'apps/*/dist', description: 'Application build artifacts' },\n { pattern: '.turbo', description: 'Root directory Turbo cache' },\n { pattern: 'packages/*/.turbo', description: 'Package Turbo cache' },\n { pattern: 'apps/*/.turbo', description: 'Application Turbo cache' },\n { pattern: 'pnpm-lock.yaml', description: 'pnpm lock file', isFile: true }\n]\n\nconst SINGLE_CLEAN_TARGETS: CleanTarget[] = [\n { pattern: 'node_modules', description: 'Root directory dependencies' },\n { pattern: '.next', description: 'Next.js cache' },\n { pattern: 'pnpm-lock.yaml', description: 'pnpm lock file', isFile: true }\n]\n\nfunction globDirsOrFiles(pattern: string, cwd: string, isFile?: boolean): string[] {\n if (!pattern.includes('*')) {\n const abs = resolve(cwd, pattern)\n if (isFile) {\n return existsSync(abs) ? [abs] : []\n }\n return existsSync(abs) && statSync(abs).isDirectory() ? [abs] : []\n }\n const [base, rest] = pattern.split('/*')\n const absBase = resolve(cwd, base)\n if (!existsSync(absBase) || !statSync(absBase).isDirectory()) return []\n const subdirs = readdirSync(absBase)\n return subdirs.map(d => join(absBase, d, rest.replace(/^[\\/]/, '')))\n .filter(p => existsSync(p) && (isFile ? true : statSync(p).isDirectory()))\n}\n\nexport async function deepClean(\n config: DevScriptsConfig,\n yes: boolean = false,\n cwd: string = typeof process !== 'undefined' ? process.cwd() : '.'\n): Promise<number> {\n const logger = new Logger(config)\n // Environment check, DO NOT EXECUTE IN PRODUCTION ENVIRONMENT\n if (process.env.NODE_ENV === 'production') {\n logger.error('❌ Production environment prohibits deep clean operations')\n logger.log(' If you need to clean, please set: NODE_ENV=development')\n logger.saveToFile('deep-clean.log', cwd)\n return 1\n }\n\n logger.warn('==============================')\n logger.warn(`‼️ Current working directory: ⭕ ${cwd} ⭕`)\n logger.warn('==============================')\n\n // Auto detect project type\n const isMonorepo = existsSync(resolve(cwd, 'pnpm-workspace.yaml'))\n const cleanTargets: CleanTarget[] = isMonorepo ? MONOREPO_CLEAN_TARGETS : SINGLE_CLEAN_TARGETS\n\n let totalToDelete: string[] = []\n let groupDeleteMap: Record<string, string[]> = {}\n\n for (const target of cleanTargets) {\n const found = globDirsOrFiles(target.pattern, cwd, target.isFile)\n groupDeleteMap[target.description] = found\n if (found.length === 0) {\n logger.info(`💯 ${target.description}: No need to clean`)\n } else {\n logger.log(`\\n[${target.description}]`)\n found.forEach(p => logger.warn(`👙 [Preview] ${p}`))\n totalToDelete.push(...found)\n }\n }\n\n if (totalToDelete.length === 0) {\n logger.success('No directories or files to clean.')\n logger.saveToFile('deep-clean.log', cwd)\n return 0\n }\n\n if (!yes) {\n logger.log('\\nIf you need to actually delete, please add --yes parameter.')\n logger.saveToFile('deep-clean.log', cwd)\n return 0\n }\n\n // Execute deletion, grouped print\n let deleted = 0\n for (const target of cleanTargets) {\n const items = groupDeleteMap[target.description] || []\n if (items.length > 0) {\n logger.log(`\\n[${target.description}]`)\n for (const p of items) {\n try {\n if (target.isFile) {\n unlinkSync(p)\n if (!existsSync(p)) {\n logger.success(`🍻 Deleted: ${p}`)\n deleted++\n } else {\n logger.error(`❌ Delete failed: ${p} (file still exists)`)\n }\n } else {\n rmSync(p, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 })\n if (!existsSync(p)) {\n logger.success(`🍻 Deleted: ${p}`)\n deleted++\n } else {\n logger.error(`❌ Delete failed: ${p} (directory still exists)`)\n }\n }\n } catch (e: any) {\n logger.error(`❌ Delete failed: ${p} (${e.message})`)\n }\n }\n }\n }\n logger.log(`\\n🍺 Total cleaned: ${deleted} directories or files.`)\n logger.saveToFile('deep-clean.log', cwd)\n return 0\n} ","import { existsSync, readFileSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nexport async function easyChangeset(cwd: string = typeof process !== 'undefined' ? process.cwd() : '.') {\n // Environment check, DO NOT EXECUTE IN PRODUCTION ENVIRONMENT\n if (process.env.NODE_ENV === 'production') {\n console.log('❌ Production environment prohibits deep clean operations')\n console.log(' If you need to clean, please set: NODE_ENV=development')\n return 1\n }\n\n console.log('==============================')\n console.log(`‼️ Current working directory: ⭕ ${cwd} ⭕`)\n console.log('==============================')\n \n const changesetDir = join(cwd, '.changeset')\n const mdxFile = join(changesetDir, 'd8-template.mdx')\n const mdFile = join(changesetDir, 'd8-template.md')\n\n if (!existsSync(changesetDir)) {\n console.log('❌ No .changeset directory found, skipping.')\n return 1\n }\n if (!existsSync(mdxFile)) {\n console.log('❌ No .changeset/d8-template.mdx file found, skipping.')\n return 1\n }\n try {\n const content = readFileSync(mdxFile, 'utf-8')\n writeFileSync(mdFile, content, 'utf-8')\n console.log('✅ Copied d8-template.mdx content to d8-template.md')\n return 0\n } catch (e: any) {\n console.log('❌ Copy failed:', e.message)\n return 1\n }\n} ","import { DevScriptsConfig, DEFAULT_CONFIG } from '@dev-scripts/config/schema'\nimport { readJsonFile } from '@dev-scripts/utils/file-scanner'\nimport { Logger } from '@dev-scripts/utils/logger'\nimport { execSync } from 'child_process'\nimport { existsSync, mkdirSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nfunction getCurrentDateString(): string {\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\nexport async function generateNextjsArchitecture(\n config: DevScriptsConfig,\n cwd: string = typeof process !== 'undefined' ? process.cwd() : '.'\n): Promise<number> {\n const logger = new Logger(config)\n try {\n // get logs directory and blog directory\n const logsDir = join(cwd, config.output?.logDir || 'logs')\n const blogDir = join(cwd, config.blog?.mdxDir || 'src/mdx/blog')\n if (!existsSync(logsDir)) mkdirSync(logsDir, { recursive: true })\n if (!existsSync(blogDir)) mkdirSync(blogDir, { recursive: true })\n\n // generate tree result to logs directory\n const treeJsonPath = join(logsDir, 'project_tree.json')\n logger.log(`Running tree command to generate ${treeJsonPath}`)\n execSync(`tree -a -J -I '.next|node_modules|logs|dist|pnpm-lock.yaml|turbo|.turbo|public|.cursor|.DS_Store|.git' > ${treeJsonPath}`)\n\n // read tree result\n const tree = readJsonFile<any[]>(treeJsonPath)\n if (!tree) {\n logger.error('Failed to read tree JSON result!')\n return 1\n }\n // Merge config and user first\n const userConfig = config.architectureConfig || {}\n const architectureConfig = { ...(DEFAULT_CONFIG.architectureConfig || {}), ...userConfig }\n\n function renderTree(nodes: any[], depth = 0, parentPath: string = ''): string {\n let mdx = ''\n for (const node of nodes) {\n const nodePath = parentPath ? `${parentPath}/${node.name}` : node.name\n const anotion = architectureConfig[node.name] || ''\n // scan root directory name='ROOT'\n const displayName = (depth === 0 && node.name === '.') ? 'ROOT' : node.name\n if (node.type === 'directory') {\n if (!node.contents || node.contents.length === 0) {\n // handle empty folder\n mdx += `${' '.repeat(depth)}<ZiaFolder name=\"${displayName}\" anotion=\"${anotion}\" className=\"opacity-50\" disabled/>\\n`\n } else {\n // handle non-empty folder\n mdx += `${' '.repeat(depth)}<ZiaFolder name=\"${displayName}\" anotion=\"${anotion}\" defaultOpen>\\n`\n mdx += renderTree(node.contents, depth + 1, nodePath)\n mdx += `${' '.repeat(depth)}</ZiaFolder>\\n`\n }\n } else if (node.type === 'file') {\n mdx += `${' '.repeat(depth)}<ZiaFile name=\"${node.name}\" anotion=\"${anotion}\" href=\"\" />\\n`\n }\n }\n return mdx\n }\n\n // generate frontmatter\n const frontmatter = `---\\ntitle: About Project Structure\\ndescription: Show all source code directories and files\\nicon: Gift\\ndate: ${getCurrentDateString()}\\n---\\n\\n## Quick Started\\n\\n`\n // generate mdx content\n const filesContent = renderTree(tree)\n const indentedFilesContent = filesContent.split('\\n').map(line => line ? ' ' + line : '').join('\\n')\n const mdx = frontmatter + '<Files>\\n' + indentedFilesContent + '</Files>\\n'\n // output to blog directory\n const outputMdxPath = join(blogDir, 'nextjs-architecture.mdx')\n writeFileSync(outputMdxPath, mdx)\n logger.success(`Successfully generated ${outputMdxPath}`)\n logger.saveToFile('generate-nextjs-architecture.log', cwd)\n return 0\n } catch (error) {\n logger.error(`Error generating nextjs architecture mdx: ${error}`)\n return 1\n }\n} ","#!/usr/bin/env node\n\nimport { program } from 'commander'\nimport { loadConfig, validateConfig } from '@dev-scripts/config'\nimport { checkTranslations } from '@dev-scripts/commands/check-translations'\nimport { cleanTranslations } from '@dev-scripts/commands/clean-translations'\nimport { generateBlogIndex } from '@dev-scripts/commands/generate-blog-index'\nimport { deepClean } from '@dev-scripts/commands/deep-clean'\nimport { easyChangeset } from '@dev-scripts/commands/easy-changeset'\nimport { generateNextjsArchitecture } from '@dev-scripts/commands/generate-nextjs-architecture'\n\n// get current working directory, ensure it works in Node.js environment\nconst cwd = typeof process !== 'undefined' ? process.cwd() : '.'\n\nprogram\n .name('dev-scripts')\n .description('development scripts for multi-language projects')\n .version('5.0.0')\n\nprogram\n .command('check-translations')\n .description('check the completeness and consistency of translation files')\n .option('-v, --verbose', 'show detailed logs', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n \n // apply verbose option after loading\n if (options.verbose) {\n config.output.verbose = true\n }\n \n validateConfig(config)\n \n const exitCode = await checkTranslations(config, cwd)\n \n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('clean-translations')\n .description('clean unused translation keys')\n .option('-v, --verbose', 'show detailed logs', false)\n .option('--remove', 'actually delete unused keys (default only show)', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n \n // apply verbose option after loading\n if (options.verbose) {\n config.output.verbose = true\n }\n \n validateConfig(config)\n \n const exitCode = await cleanTranslations(config, options.remove, cwd)\n \n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('generate-blog-index')\n .description('generate blog index file')\n .option('-v, --verbose', 'show detailed logs', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n \n // apply verbose option after loading\n if (options.verbose) {\n config.output.verbose = true\n }\n \n validateConfig(config)\n \n const exitCode = await generateBlogIndex(config, cwd)\n \n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('deep-clean')\n .description('clean all node_modules, dist, .next, .turbo and related caches in monorepo')\n .option('--yes', 'actually delete matched directories (default only preview)', false)\n .option('-v, --verbose', 'show detailed logs', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n if (options.verbose) {\n config.output.verbose = true\n }\n validateConfig(config)\n const exitCode = await deepClean(config, options.yes, cwd)\n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('easy-changeset')\n .description('copy .changeset/d8-template.mdx to .changeset/d8-template.md if both exist')\n .action(async () => {\n try {\n const exitCode = await easyChangeset(cwd)\n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\nprogram\n .command('generate-nextjs-architecture')\n .description('generate nextjs-architecture.mdx for project structure')\n .option('-v, --verbose', 'show detailed logs', false)\n .action(async (options) => {\n try {\n const config = loadConfig(cwd, {}, options.verbose)\n if (options.verbose) {\n config.output.verbose = true\n }\n validateConfig(config)\n const exitCode = await generateNextjsArchitecture(config, cwd)\n if (typeof process !== 'undefined') {\n process.exit(exitCode)\n }\n } catch (error) {\n console.error('Error:', error)\n if (typeof process !== 'undefined') {\n process.exit(1)\n }\n }\n })\n\n// parse command line arguments\nif (typeof process !== 'undefined') {\n program.parse(process.argv)\n} "]}
package/dist/index.js CHANGED
@@ -608,12 +608,16 @@ async function generateBlogIndex(config, cwd = typeof process !== "undefined" ?
608
608
  } else {
609
609
  logger.warn(`Could not read or parse ${metaFile}. No articles will be marked as featured.`);
610
610
  }
611
- const featuredSlugs = meta.pages.map((p) => p.endsWith(".mdx") ? p.slice(0, -4) : p).filter((slug) => slug !== "index" && slug !== "..." && slug !== iocSlug && slug !== `!${iocSlug}`);
611
+ const hiddenSlugs = new Set(
612
+ meta.pages.filter((p) => p.startsWith("!")).map((p) => p.slice(1))
613
+ );
614
+ const featuredSlugs = meta.pages.filter((p) => !p.startsWith("!")).map((p) => p.endsWith(".mdx") ? p.slice(0, -4) : p).filter((slug) => slug !== "index" && slug !== "...");
612
615
  logger.log(`Featured slugs (meta-config): ${featuredSlugs.join(", ")}`);
613
616
  const allArticles = await getAllBlogArticles(config.blog.mdxDir, cwd, logger);
614
617
  logger.log(`Found ${allArticles.length} all articles.`);
615
- const iocArticle = allArticles.find((a) => a.slug === iocSlug);
616
- const filteredArticles = allArticles.filter((a) => a.slug !== iocSlug);
618
+ const visibleArticles = allArticles.filter((a) => !hiddenSlugs.has(a.slug));
619
+ const iocArticle = visibleArticles.find((a) => a.slug === iocSlug);
620
+ const filteredArticles = visibleArticles.filter((a) => a.slug !== iocSlug);
617
621
  if (filteredArticles.length === 0 && featuredSlugs.length === 0) {
618
622
  logger.warn("No articles found or featured. The generated index might be empty or minimal.");
619
623
  }
@@ -707,7 +711,7 @@ async function generateBlogIndex(config, cwd = typeof process !== "undefined" ?
707
711
  }
708
712
  fs.writeFileSync(indexFile, mdxContent);
709
713
  logger.success(`Successfully generated ${indexFile}`);
710
- await generateMonthlyBlogSummary(config, allArticles, iocFile, iocSlug, logger);
714
+ await generateMonthlyBlogSummary(config, visibleArticles, iocFile, iocSlug, logger);
711
715
  logger.log("Blog index generation completed successfully!");
712
716
  logger.saveToFile("generate-blog.log", cwd);
713
717
  return 0;