Skip to content

Commit 82338ad

Browse files
committed
fix(nx-infra-plugin): drop CRLF→LF normalization to preserve Windows CI artifacts
1 parent 9b23fbc commit 82338ad

3 files changed

Lines changed: 12 additions & 39 deletions

File tree

packages/nx-infra-plugin/src/executors/compress/executor.e2e.spec.ts

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ describe('CompressExecutor E2E', () => {
6363
expect(output.length).toBeLessThan(SAMPLE_CODE.length);
6464
});
6565

66-
it('should apply normalize: normalize CRLF to LF, ensure trailing newline, preserve debug blocks', async () => {
66+
it('should apply normalize: ensure trailing newline, preserve debug blocks and original line endings', async () => {
6767
const filePath = path.join(projectDir, 'test.js');
6868
const crlfContent = SAMPLE_CODE.replace(/\n/g, '\r\n');
6969
await writeFileText(filePath, crlfContent);
@@ -78,7 +78,7 @@ describe('CompressExecutor E2E', () => {
7878

7979
const output = await readFileText(filePath);
8080

81-
expect(output).not.toContain('\r\n');
81+
expect(output).toContain('\r\n');
8282
expect(output.endsWith('\n')).toBe(true);
8383
expect(output).toContain('#DEBUG');
8484
expect(output).toContain('debug only');
@@ -141,8 +141,6 @@ describe('CompressExecutor E2E', () => {
141141

142142
expect(output).toContain('function hello');
143143
expect(output.split('\n').length).toBeGreaterThan(3);
144-
145-
expect(output).not.toContain('\r\n');
146144
});
147145

148146
it('should expand glob patterns in files array', async () => {
@@ -201,25 +199,6 @@ describe('CompressExecutor E2E', () => {
201199
expect(output.endsWith('\n')).toBe(false);
202200
});
203201

204-
it('should normalize CRLF to LF in strip-debug mode', async () => {
205-
const filePath = path.join(projectDir, 'test.js');
206-
const crlfContent = SAMPLE_CODE.replace(/\n/g, '\r\n');
207-
await writeFileText(filePath, crlfContent);
208-
209-
const options: CompressExecutorSchema = {
210-
files: ['./test.js'],
211-
mode: 'strip-debug',
212-
};
213-
214-
const result = await executor(options, context);
215-
expect(result.success).toBe(true);
216-
217-
const output = await readFileText(filePath);
218-
expect(output).not.toContain('\r\n');
219-
expect(output).not.toContain('\r');
220-
expect(output).toContain('function hello');
221-
});
222-
223202
it('should skip trailing newline in minify mode (compress:bundles:prod -c production parity)', async () => {
224203
const filePath = path.join(projectDir, 'test.js');
225204
await writeFileText(filePath, SAMPLE_CODE);

packages/nx-infra-plugin/src/executors/compress/executor.ts

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,7 @@ import { minimatch } from 'minimatch';
77
import { CompressExecutorSchema, CompressMode, CompressModeName } from './schema';
88
import { resolveProjectPath, normalizeGlobPathForWindows } from '../../utils/path-resolver';
99
import { isWindowsOS, containsGlobPattern } from '../../utils/common';
10-
import {
11-
readFileText,
12-
writeFileText,
13-
normalizeEol,
14-
ensureTrailingNewline,
15-
} from '../../utils/file-operations';
10+
import { readFileText, writeFileText, ensureTrailingNewline } from '../../utils/file-operations';
1611

1712
// NOTE:
1813
// Removes the #DEBUG section from the code in the production build.
@@ -90,9 +85,8 @@ function stripDebugBlocks(content: string): string {
9085
return content.replace(REMOVE_DEBUG_REGEXP, '');
9186
}
9287

93-
function normalizeOutput(content: string, trailingNewline: boolean): string {
94-
const eolNormalized = normalizeEol(content);
95-
return trailingNewline ? ensureTrailingNewline(eolNormalized) : eolNormalized;
88+
function appendTrailingNewline(content: string, trailingNewline: boolean): string {
89+
return trailingNewline ? ensureTrailingNewline(content) : content;
9690
}
9791

9892
type ResolvedMode = {
@@ -116,12 +110,13 @@ type CompressStrategy = (content: string, mode: ResolvedMode) => Promise<string>
116110

117111
const STRATEGIES: Record<CompressModeName, CompressStrategy> = {
118112
minify: async (content, { eulaUrl, trailingNewline }) =>
119-
normalizeOutput(await runMinify(stripDebugBlocks(content), eulaUrl), trailingNewline),
113+
appendTrailingNewline(await runMinify(stripDebugBlocks(content), eulaUrl), trailingNewline),
120114
beautify: async (content, { eulaUrl, trailingNewline }) =>
121-
normalizeOutput(await runBeautify(content, eulaUrl), trailingNewline),
115+
appendTrailingNewline(await runBeautify(content, eulaUrl), trailingNewline),
122116
'strip-debug': async (content, { trailingNewline }) =>
123-
normalizeOutput(stripDebugBlocks(content), trailingNewline),
124-
normalize: async (content, { trailingNewline }) => normalizeOutput(content, trailingNewline),
117+
appendTrailingNewline(stripDebugBlocks(content), trailingNewline),
118+
normalize: async (content, { trailingNewline }) =>
119+
appendTrailingNewline(content, trailingNewline),
125120
};
126121

127122
async function compressFile(filePath: string, mode: CompressMode): Promise<void> {

packages/nx-infra-plugin/src/executors/vectormap/executor.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
ensureDir,
99
readFileText,
1010
writeFileText,
11-
normalizeEol,
1211
ensureTrailingNewline,
1312
} from '../../utils/file-operations';
1413

@@ -59,7 +58,7 @@ async function buildUtilsVariant(
5958
const compiled = _.template(utilsTemplate);
6059
let bundle = compiled({ data: concatenated });
6160

62-
bundle = ensureTrailingNewline(normalizeEol(bundle));
61+
bundle = ensureTrailingNewline(bundle);
6362

6463
const outputPath = path.join(outDir, `${variant.fileName}${variant.suffix}.js`);
6564
await writeFileText(outputPath, bundle);
@@ -141,7 +140,7 @@ async function writeRegionModules(
141140
for (const { name, data } of regions) {
142141
const rawData = `${name} = ${JSON.stringify(data)};`;
143142
let wrapped = USE_STRICT_HEADER + compiled({ data: rawData });
144-
wrapped = ensureTrailingNewline(normalizeEol(wrapped));
143+
wrapped = ensureTrailingNewline(wrapped);
145144
await writeFileText(path.join(outDir, `${name}.js`), wrapped);
146145
}
147146
}

0 commit comments

Comments
 (0)