Skip to content

Commit

Permalink
feat(require-name): add require-name rule
Browse files Browse the repository at this point in the history
  • Loading branch information
chouchouji committed Feb 8, 2025
1 parent 8364668 commit a24436a
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ The default settings don't conflict, and Prettier plugins can quickly fix up ord
| [order-properties](docs/rules/order-properties.md) | Package properties must be declared in standard order || 🔧 | | |
| [repository-shorthand](docs/rules/repository-shorthand.md) | Enforce either object or shorthand declaration for repository. || 🔧 | | |
| [require-author](docs/rules/require-author.md) | Requires the `author` property to be present. | | | | |
| [require-name](docs/rules/require-name.md) | Requires the `name` property to be present. || | | |
| [require-version](docs/rules/require-version.md) | Requires the `version` property to be present. || | | |
| [sort-collections](docs/rules/sort-collections.md) | Dependencies, scripts, and configuration values must be declared in alphabetical order. || 🔧 | | |
| [unique-dependencies](docs/rules/unique-dependencies.md) | Checks a dependency isn't specified more than once (i.e. in `dependencies` and `devDependencies`) || | 💡 | |
Expand Down
27 changes: 27 additions & 0 deletions docs/rules/require-name.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# require-name

💼 This rule is enabled in the ✅ `recommended` config.

<!-- end auto-generated rule header -->

This rule checks for the existence of the `"name"` property in a package.json,
and reports a violation if it doesn't exist.

Example of **incorrect** code for this rule:

```json
{
"version": "13.0.0",
"author": "Jessica Moss"
}
```

Example of **correct** code for this rule:

```json
{
"name": "thee-silver-mt-zion",
"version": "13.0.0",
"author": "Jessica Moss"
}
```
1 change: 1 addition & 0 deletions src/rules/require-properties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { createRequirePropertyRule } from "../utils/createRequirePropertyRule.js
const properties = [
["author", false],
["version", true],
["name", true],
// TODO: More to come!
] satisfies [string, boolean][];

Expand Down
47 changes: 47 additions & 0 deletions src/tests/rules/require-name.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { rules } from "../../rules/require-properties.js";
import { ruleTester } from "./ruleTester.js";

ruleTester.run("require-name", rules["require-name"], {
invalid: [
{
code: "{}",
errors: [
{
data: { property: "name" },
line: 1,
messageId: "missing",
},
],
},
{
code: `{
"version": "1.0.0"
}
`,
errors: [
{
data: { property: "name" },
line: 1,
messageId: "missing",
},
],
},
{
code: `{
"author": "Jessica Moss",
"bin": {
"name": "test"
}
}
`,
errors: [
{
data: { property: "name" },
line: 1,
messageId: "missing",
},
],
},
],
valid: [`{ "name": "test" }`],
});

0 comments on commit a24436a

Please sign in to comment.