Skip to content

Commit 47007fd

Browse files
committed
feat(@schematics/angular): add prettier dependency by default with --skip-prettier flag added to skip prettier install
Add prettier as a devDependency by default when creating a new workspace since the prettier configuration is already being added to package.json. Users can opt-out using the --skip-prettier flag which will skip both the prettier configuration and dependency. Fixes #32216
1 parent f2917f5 commit 47007fd

File tree

4 files changed

+26
-4
lines changed

4 files changed

+26
-4
lines changed

packages/schematics/angular/utility/latest-versions/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"jsdom": "^27.1.0",
1919
"less": "^4.2.0",
2020
"postcss": "^8.5.3",
21+
"prettier": "^3.7.4",
2122
"protractor": "~7.0.0",
2223
"rxjs": "~7.8.0",
2324
"tailwindcss": "^4.1.12",

packages/schematics/angular/workspace/files/package.json.template

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"build": "ng build",
88
"watch": "ng build --watch --configuration development"<% if (!minimal) { %>,
99
"test": "ng test"<% } %>
10-
},
10+
},<% if (!skipPrettier) { %>
1111
"prettier": {
1212
"printWidth": 100,
1313
"singleQuote": true,
@@ -19,7 +19,7 @@
1919
}
2020
}
2121
]
22-
},
22+
},<% } %>
2323
"private": true,
2424
<% if (packageManagerWithVersion) { %>"packageManager": "<%= packageManagerWithVersion %>",<% } %>
2525
"dependencies": {
@@ -34,7 +34,8 @@
3434
},
3535
"devDependencies": {
3636
"@angular/cli": "<%= '^' + version %>",
37-
"@angular/compiler-cli": "<%= latestVersions.Angular %>",
37+
"@angular/compiler-cli": "<%= latestVersions.Angular %>",<% if (!skipPrettier) { %>
38+
"prettier": "<%= latestVersions['prettier'] %>",<% } %>
3839
"typescript": "<%= latestVersions['typescript'] %>"
3940
}
4041
}

packages/schematics/angular/workspace/index_spec.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,24 @@ describe('Workspace Schematic', () => {
135135
expect(tasks).not.toContain(jasmine.objectContaining({ type: 'npm', script: 'test' }));
136136
});
137137

138-
it('should include prettier config overrides for Angular templates', async () => {
138+
it('should include prettier config and dependency by default', async () => {
139139
const tree = await schematicRunner.runSchematic('workspace', defaultOptions);
140140
const pkg = JSON.parse(tree.readContent('/package.json'));
141141
expect(pkg.prettier).withContext('package.json#prettier is present').toBeTruthy();
142+
expect(pkg.devDependencies['prettier'])
143+
.withContext('prettier is in devDependencies')
144+
.toEqual(latestVersions['prettier']);
145+
});
146+
147+
it('should not include prettier config and dependency when skipPrettier is true', async () => {
148+
const tree = await schematicRunner.runSchematic('workspace', {
149+
...defaultOptions,
150+
skipPrettier: true,
151+
});
152+
const pkg = JSON.parse(tree.readContent('/package.json'));
153+
expect(pkg.prettier).withContext('package.json#prettier should not be present').toBeUndefined();
154+
expect(pkg.devDependencies['prettier'])
155+
.withContext('prettier should not be in devDependencies')
156+
.toBeUndefined();
142157
});
143158
});

packages/schematics/angular/workspace/schema.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@
4444
"$default": {
4545
"$source": "packageManager"
4646
}
47+
},
48+
"skipPrettier": {
49+
"description": "Skip adding Prettier configuration and dependency to the workspace.",
50+
"type": "boolean",
51+
"default": false
4752
}
4853
},
4954
"required": ["name", "version"]

0 commit comments

Comments
 (0)