import assert from 'node:assert/strict'; import { expectFileToMatch, writeMultipleFiles } from '../../utils/fs'; import { ng } from '../../utils/process'; import { updateJsonFile } from '../../utils/project'; export default async function () { await writeMultipleFiles({ 'src/string-style.css': '.string-style { color: red }', 'src/input-style.css': '.input-style { color: red }', 'src/lazy-style.css': '.lazy-style { color: red }', 'src/pre-rename-style.css': '.pre-rename-style { color: red }', 'src/pre-rename-lazy-style.css': '.pre-rename-lazy-style { color: red }', }); await updateJsonFile('angular.json', (workspaceJson) => { const appArchitect = workspaceJson.projects['test-project'].architect; appArchitect.build.options.styles = [ { input: 'src/string-style.css' }, { input: 'src/input-style.css' }, { input: 'src/lazy-style.css', inject: false }, { input: 'src/pre-rename-style.css', bundleName: 'renamed-style' }, { input: 'src/pre-rename-lazy-style.css', bundleName: 'renamed-lazy-style', inject: false, }, ]; }); const { stdout } = await ng('build', '--configuration=development'); await expectFileToMatch('dist/test-project/browser/styles.css', '.string-style'); await expectFileToMatch('dist/test-project/browser/styles.css', '.input-style'); await expectFileToMatch('dist/test-project/browser/lazy-style.css', '.lazy-style'); await expectFileToMatch('dist/test-project/browser/renamed-style.css', '.pre-rename-style'); await expectFileToMatch( 'dist/test-project/browser/renamed-lazy-style.css', '.pre-rename-lazy-style', ); await expectFileToMatch( 'dist/test-project/browser/index.html', '', ); // Non injected styles should be listed under lazy chunk files assert.match(stdout, /Lazy chunk files[\s\S]+renamed-lazy-style\.css/m); }