Open JoshuaKGoldberg opened 12 months ago
As of merging #135, I believe all the recommended
-preset-level rules from eslint-plugin-json-files and npm-package-json-lint are implemented here! ๐
That means https://github.com/JoshuaKGoldberg/create-typescript-app/issues/839 is now unblocked.
Just an idea: I'm using normalize-package-data in one project. It is not an ESLint package, but it makes some interesting things from which one might draw inspiration :slightly_smiling_face: Or would it be possible to create rules that use this package?
Ooh interesting, I hadn't seen that package. Looks useful!
There might be some use in standardizing files, yeah. #85 is another example of an equivalent package being mentioned as something we may want in this repo. I'd suggest the same thing for any new tool: file an issue with the suggested new rules.
Some initial thoughts looking through its README: it looks like a lot of the rules are around standardization and data validity checking. For standardization, I think it'd be reasonable to take any where the standardized version is objectively cleaner (e.g. #71). For validity, as long as it's a clearly more-valid form (e.g. #134). But I haven't put much thought into this - definitely interested in other points of view!
Another one is pkg-ok
, which for example ensures that files referenced in package.json
exist.
Ah sorry I dropped responding to pkg-ok
note. It's a nice idea but the tricky thing is that a lot of packages refer to files that don't exist during development. I'm going to hold off adding that to this table - but if you want to talk about adding it in, I'd be interested in seeing a separate issue. Thanks!
Spinning out of #28: I want to make sure that all the nice features that other tools in the ecosystem have are considered in this repository.
๐ If you're a maintainer of any of the referenced packages then please reach out to me (I believe I've emailed you and/or pinged you in your issue tracker). I'd love to work with you on deduplicating rule implementations!
Note that this table is accurate only to my interpretation of each rule's intent - not necessarily their implementation details. For example, this package's
valid-package-def
might not capture everynpm-package-json-lint
*-type
validation it's mentioned alongside. If you spot a gap in this package I'd encourage you to file a bug or feature request to fill it in.โ ๏ธ This is a big table and susceptible to human error. Please say something if anything is amiss!
Area emoji key:
Package emoji key:
recommended
preset have been implementedcompat-engines
valid-semver
unique-dependencies
require-unique-dependency-names
no-dupe-deps
no-repeated-dependencies
valid-local-dependency
valid-package-def
bin-type
valid-package-def
bundledDependencies-type
valid-package-def
config-type
valid-package-def
cpu-type
valid-package-def
dependencies-type
valid-package-def
description-type
valid-package-def
devDependencies-type
valid-package-def
directories-type
valid-package-def
engines-type
valid-package-def
files-type
valid-package-def
homepage-type
valid-package-def
keywords-type
valid-package-def
license-type
valid-package-def
main-type
valid-package-def
man-type
valid-package-def
name-type
valid-package-def
no-duplicate-properties
valid-package-def
optionalDependencies-type
valid-package-def
os-type
valid-package-def
peerDependencies-type
valid-package-def
preferGlobal-type
valid-package-def
private-type
valid-package-def
repository-type
valid-package-def
scripts-type
valid-package-def
valid-values-author
valid-package-def
valid-values-engines
valid-package-def
valid-values-license
valid-package-def
valid-values-name-scope
valid-package-def
valid-values-private
valid-package-def
valid-values-publishConfig
valid-package-def
version-type
prefer-scripts
require-author
require-bin
require-bundledDependencies
require-config
require-contributors
require-cpu
require-devDependencies
require-directories
require-files
require-funding
require-main
require-man
require-module
require-name
require-optionalDependencies
require-os
require-peerDependencies
require-preferGlobal
require-private
require-publishConfig
require-scripts
require-types
require-typings
require-version
require-version
require-bugs
require-dependencies
require-description
require-homepage
require-keywords
require-repository
ensure-volta-extends
require-engines
require-engines
require-license
require-license
description-format
valid-name
name-format
valid-version
version-format
valid-repository-directory
ensure-repository-directory
require-repository-directory
order-properties
prefer-property-order
no-restricted-dependencies
no-restricted-devDependencies
no-restricted-pre-release-dependencies
no-restricted-pre-release-devDependencies
no-branch-in-dependencies
restrict-ranges
no-archive-dependencies
restrict-ranges
no-archive-devDependencies
restrict-ranges
no-caret-version-dependencies
restrict-ranges
no-caret-version-devDependencies
restrict-ranges
no-file-dependencies
restrict-ranges
no-file-devDependencies
restrict-ranges
no-git-dependencies
restrict-ranges
no-git-devDependencies
restrict-ranges
no-tilde-version-dependencies
restrict-ranges
no-tilde-version-devDependencies
restrict-ranges
prefer-no-version-zero-dependencies
restrict-ranges
prefer-no-version-zero-devDependencies
restrict-ranges
absolute-version
no-absolute-version-dependencies
restrict-ranges
absolute-version
no-absolute-version-devDependencies
restrict-ranges
absolute-version
prefer-absolute-version-dependencies
restrict-ranges
absolute-version
prefer-absolute-version-devDependencies
restrict-ranges
prefer-caret-range-version
prefer-caret-version-dependencies
restrict-ranges
prefer-caret-range-version
prefer-caret-version-devDependencies
restrict-ranges
prefer-tilde-range-version
prefer-tilde-version-dependencies
restrict-ranges
prefer-tilde-range-version
prefer-tilde-version-devDependencies
sort-collections
prefer-alphabetical-bundledDependencies
sort-collections
prefer-alphabetical-dependencies
sort-collections
prefer-alphabetical-devDependencies
sort-collections
prefer-alphabetical-optionalDependencies
sort-collections
prefer-alphabetical-peerDependencies
sort-collections
prefer-alphabetical-scripts
prefer-no-contributors
prefer-no-dependencies
prefer-no-devDependencies
prefer-no-engineStrict
prefer-no-optionalDependencies
prefer-no-peerDependencies
I also looked at: