@@ -3,13 +3,34 @@ import path from 'path'
33import outputFileSync from 'output-file-sync'
44import readdir from 'recursive-readdir'
55import { pascalCase } from '@svgr/core'
6+ import camelCase from 'lodash/camelCase'
7+ import kebabCase from 'lodash/kebabCase'
68import { stat , convertFile } from './util'
79
8- function rename ( relative , ext ) {
10+ const CASE = {
11+ KEBAB : 'kebab' , // kebab-case
12+ CAMEL : 'camel' , // camelCase
13+ PASCAL : 'pascal' , // PascalCase
14+ }
15+
16+ function transformFilename ( filename , filenameCase ) {
17+ switch ( filenameCase ) {
18+ case CASE . KEBAB :
19+ return kebabCase ( filename )
20+ case CASE . CAMEL :
21+ return camelCase ( filename )
22+ case CASE . PASCAL :
23+ return pascalCase ( filename )
24+ default :
25+ throw new Error ( `Unknown --filename-case ${ filenameCase } ` )
26+ }
27+ }
28+
29+ function rename ( relative , ext , filenameCase ) {
930 const relativePath = path . parse ( relative )
1031 relativePath . ext = `.${ ext } `
11- relativePath . name = pascalCase ( relativePath . name )
1232 relativePath . base = null
33+ relativePath . name = transformFilename ( relativePath . name , filenameCase )
1334
1435 return path . format ( relativePath )
1536}
@@ -21,10 +42,14 @@ export function isCompilable(filename) {
2142 return COMPILABLE_EXTENSIONS . includes ( ext )
2243}
2344
24- async function dirCommand ( program , filenames , { ext = 'js' , ...options } ) {
45+ async function dirCommand (
46+ program ,
47+ filenames ,
48+ { ext = 'js' , filenameCase = CASE . PASCAL , ...options } ,
49+ ) {
2550 async function write ( src , relative ) {
2651 if ( ! isCompilable ( relative ) ) return false
27- relative = rename ( relative , ext )
52+ relative = rename ( relative , ext , filenameCase )
2853
2954 const dest = path . join ( program . outDir , relative )
3055 const code = await convertFile ( src , options , { filePath : dest } )
0 commit comments