@@ -62,6 +62,8 @@ export const codemodCamelToKebab = async ({ cwd }: { cwd: string }) => {
6262 const transformed = segments . map ( ( seg ) => {
6363 const ext = path . extname ( seg )
6464 const name = path . basename ( seg , ext )
65+ // skip ALL_CAPS files like README.md, LICENSE, CLAUDE.md
66+ if ( / ^ [ A - Z 0 - 9 _ ] + $ / . test ( name ) ) return seg
6567 const kebab = name . replace ( / ( [ a - z ] ) ( [ A - Z ] ) / g, "$1-$2" ) . toLowerCase ( )
6668 return `${ kebab } ${ ext } `
6769 } )
@@ -80,6 +82,8 @@ export const codemodCamelToKebab = async ({ cwd }: { cwd: string }) => {
8082 . map ( ( seg , i ) => {
8183 if ( seg === "." || seg === ".." ) return seg
8284 if ( i === 0 && seg . startsWith ( "@" ) ) return seg
85+ // skip ALL_CAPS segments in imports too
86+ if ( / ^ [ A - Z 0 - 9 _ ] + $ / . test ( seg ) ) return seg
8387 return seg . replace ( / ( [ a - z ] ) ( [ A - Z ] ) / g, "$1-$2" ) . toLowerCase ( )
8488 } )
8589 . join ( "/" )
@@ -94,15 +98,27 @@ export const codemodCamelToKebab = async ({ cwd }: { cwd: string }) => {
9498 const absPath = path . resolve ( cwd , relPath )
9599 let content = await fs . promises . readFile ( absPath , "utf8" )
96100
97- // a ) update real imports: from "…"
101+ // a1 ) update real imports: from "…"
98102 content = content . replace (
99103 / ( f r o m \s + [ ' " ` ] ) ( [ ^ ' " ` ] + ) ( [ ' " ` ] ) / g,
100104 ( _full , p1 , p2 , p3 ) => `${ p1 } ${ kebabifyPath ( p2 ) } ${ p3 } ` ,
101105 )
102106
103- // b ) update Vitest mock imports: vi.mock("…") & vi.importActual( "…")
107+ // a2 ) update side-effect imports: import "…"
104108 content = content . replace (
105- / ( v i \. (?: m o c k | i m p o r t A c t u a l ) \( \s * [ ' " ` ] ) ( [ ^ ' " ` ] + ) ( [ ' " ` ] ) / g,
109+ / ( i m p o r t \s + [ ' " ` ] ) ( [ ^ ' " ` ] + ) ( [ ' " ` ] ) / g,
110+ ( _full , p1 , p2 , p3 ) => `${ p1 } ${ kebabifyPath ( p2 ) } ${ p3 } ` ,
111+ )
112+
113+ // a3) update dynamic imports & require: import("…"), require("…")
114+ content = content . replace (
115+ / ( (?: i m p o r t | r e q u i r e ) \s * \( \s * [ ' " ` ] ) ( [ ^ ' " ` ] + ) ( [ ' " ` ] \s * \) ) / g,
116+ ( _full , p1 , p2 , p3 ) => `${ p1 } ${ kebabifyPath ( p2 ) } ${ p3 } ` ,
117+ )
118+
119+ // b) update Vitest/Jest mock imports: vi.mock("…"), jest.mock("…")
120+ content = content . replace (
121+ / ( (?: v i | j e s t ) \. (?: m o c k | i m p o r t A c t u a l | r e q u i r e A c t u a l ) \( \s * [ ' " ` ] ) ( [ ^ ' " ` ] + ) ( [ ' " ` ] ) / g,
106122 ( _full , p1 , p2 , p3 ) => `${ p1 } ${ kebabifyPath ( p2 ) } ${ p3 } ` ,
107123 )
108124
0 commit comments