Skip to content

Commit 702a313

Browse files
feat: allow more Prettier customizations (#2121)
## PR Checklist - [x] Addresses an existing open issue: - fixes #2118 - fixes #2119 - fixes #2120 - [x] That issue was marked as [`status: accepting prs`](https://github.com/JoshuaKGoldberg/create-typescript-app/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22) - [x] Steps in [CONTRIBUTING.md](https://github.com/JoshuaKGoldberg/create-typescript-app/blob/main/.github/CONTRIBUTING.md) were taken ## Overview Collection of related Prettier touchups that would be time-consuming to split apart. 🎁
1 parent 6462b15 commit 702a313

File tree

4 files changed

+21
-7
lines changed

4 files changed

+21
-7
lines changed

Diff for: src/blocks/blockPrettier.test.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ describe("blockPrettier", () => {
209209
{
210210
"addons": {
211211
"files": [
212+
".prettierrc",
212213
".prettierrc.{c*,js,m*,t*}",
213214
"prettier.config*",
214215
],
@@ -261,10 +262,12 @@ describe("blockPrettier", () => {
261262
ignores: ["generated"],
262263
overrides: [{ files: ".nvmrc", options: { parser: "yaml" } }],
263264
plugins: [
265+
"./lib/index.js",
264266
"prettier-plugin-curly",
265267
"prettier-plugin-packagejson",
266268
"prettier-plugin-sh",
267269
],
270+
runBefore: ["pnpm build || exit 0"],
268271
},
269272
options: optionsBase,
270273
});
@@ -305,6 +308,9 @@ describe("blockPrettier", () => {
305308
{
306309
"name": "Prettier",
307310
"steps": [
311+
{
312+
"run": "pnpm build || exit 0",
313+
},
308314
{
309315
"run": "pnpm format --list-different",
310316
},
@@ -365,7 +371,7 @@ describe("blockPrettier", () => {
365371
/pnpm-lock.yaml
366372
generated
367373
",
368-
".prettierrc.json": "{"$schema":"http://json.schemastore.org/prettierrc","overrides":[{"files":".nvmrc","options":{"parser":"yaml"}}],"plugins":["prettier-plugin-curly","prettier-plugin-packagejson","prettier-plugin-sh"],"useTabs":true}",
374+
".prettierrc.json": "{"$schema":"http://json.schemastore.org/prettierrc","overrides":[{"files":".nvmrc","options":{"parser":"yaml"}}],"plugins":["./lib/index.js","prettier-plugin-curly","prettier-plugin-packagejson","prettier-plugin-sh"],"useTabs":true}",
369375
},
370376
"scripts": [
371377
{

Diff for: src/blocks/blockPrettier.ts

+12-4
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ export const blockPrettier = base.createBlock({
3030
)
3131
.default([]),
3232
plugins: z.array(z.string()).default([]),
33+
runBefore: z.array(z.string()).default([]),
3334
},
3435
produce({ addons }) {
35-
const { ignores, overrides, plugins } = addons;
36+
const { ignores, overrides, plugins, runBefore } = addons;
3637

3738
return {
3839
addons: [
@@ -59,14 +60,17 @@ pnpm format --write
5960
jobs: [
6061
{
6162
name: "Prettier",
62-
steps: [{ run: "pnpm format --list-different" }],
63+
steps: [
64+
...runBefore.map((run) => ({ run })),
65+
{ run: "pnpm format --list-different" },
66+
],
6367
},
6468
],
6569
}),
6670
blockPackageJson({
6771
properties: {
6872
devDependencies: getPackageDependencies(
69-
...plugins,
73+
...plugins.filter((plugin) => !plugin.startsWith(".")),
7074
"husky",
7175
"lint-staged",
7276
"prettier",
@@ -115,7 +119,11 @@ pnpm format --write
115119
dependencies: ["eslint-config-prettier", "eslint-plugin-prettier"],
116120
}),
117121
blockRemoveFiles({
118-
files: [".prettierrc.{c*,js,m*,t*}", "prettier.config*"],
122+
files: [
123+
".prettierrc",
124+
".prettierrc.{c*,js,m*,t*}",
125+
"prettier.config*",
126+
],
119127
}),
120128
blockRemoveWorkflows({
121129
workflows: ["format", "prettier"],

Diff for: src/data/packageData.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ describe(getPackageDependencies, () => {
3030
const act = () => getPackageDependencies("package-unknown");
3131

3232
expect(act).toThrowError(
33-
"package-unknown is neither in package.json's dependencies nor its devDependencies.",
33+
"'package-unknown' is neither in package.json's dependencies nor its devDependencies.",
3434
);
3535
});
3636
});

Diff for: src/data/packageData.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export function getPackageDependency(name: string) {
2121

2222
if (!version) {
2323
throw new Error(
24-
`'${name} is neither in package.json's dependencies nor its devDependencies.`,
24+
`'${name}' is neither in package.json's dependencies nor its devDependencies.`,
2525
);
2626
}
2727

0 commit comments

Comments
 (0)