File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -102,7 +102,10 @@ export async function withJsonFile<T = any>(
102102
103103 // set indentation based on the first indented line
104104 const indent = / ^ ( \s + ) / m. exec ( rawContent ) ?. [ 1 ] || 0 ;
105- const newContent = JSON . stringify ( doc , null , indent ) ;
105+ // preserve final line ending if present
106+ const ending = rawContent . endsWith ( '\n' ) ? '\n' : '' ;
107+
108+ const newContent = JSON . stringify ( doc , null , indent ) + ending ;
106109 if ( newContent !== rawContent ) {
107110 await writeFile ( path , newContent ) ;
108111 }
Original file line number Diff line number Diff line change @@ -102,6 +102,17 @@ describe('withJsonFile', () => {
102102 expect ( newContent ) . to . equal ( JSON . stringify ( EXPECTED_DATA , null , indentation ) ) ;
103103 } ) ;
104104 } ) ;
105+
106+ it ( 'should preserve final line ending' , async ( ) => {
107+ await writeFile ( TEST_FILE , '{}\n' ) ;
108+
109+ await withJsonFile ( TEST_FILE , ( f ) => {
110+ f . key = 'value' ;
111+ } ) ;
112+
113+ const newContent = ( await readFile ( TEST_FILE ) ) . toString ( ) ;
114+ expect ( newContent ) . to . equal ( '{"key":"value"}\n' ) ;
115+ } ) ;
105116} ) ;
106117
107118describe ( 'withYamlFile' , ( ) => {
You can’t perform that action at this time.
0 commit comments