-
Notifications
You must be signed in to change notification settings - Fork 28
📌 Tracking issue: comparison with equivalent other tools #42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
As of merging #135, I believe all the That means JoshuaKGoldberg/create-typescript-app#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 🙂 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 |
Ah sorry I dropped responding to |
03/10/2024, ESLint released it's official package for supporting JSON files. Shouldn't this package adopt that package under the hood now? |
That could be an interesting other exploration! I haven't dug too much into the new languages designs for ESLint core or how they compare/contrast with |
Publint is also a tool for linting package.json kinda. I recently listed [1] some files that would be useful if it would recognise as a files that should not be included in npm package. The difference with that tool to this eslint plugin is that it lints the published version while this eslint plugin is used before packing / publishing. Correct me if I’m wrong here :) I’m not sure how many of these files would be listed in files section and how many this plugin could detect, but maybe some of them are valid also for this eslint plugin and no-redudant-files rule. |
My sense is that when people include those files in published packages it's because they're not explicitly declaring |
Yeah, I agree. How they may end up in the package is that the glob given in There is also possibility that some of those files are by purpose included. For example, if it's template project. Fun fact with the file list that i gathered is that they are all files that I found in popular npm packages. The eslint files may be on purpose because some people like to run eslint on published package and they want to ship their config with the package for that reason. All the other files are probably accidents. (And most of them where probably old packages that haven't been updated in 5 years.) |
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.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
& #818bin-type
valid-package-def
& #819bundledDependencies-type
valid-package-def
& #820config-type
valid-package-def
& #821cpu-type
valid-package-def
& #822dependencies-type
valid-package-def
& #823description-type
valid-package-def
& #824devDependencies-type
valid-package-def
& #825directories-type
valid-package-def
& #826engines-type
valid-package-def
& #827files-type
valid-package-def
& #828homepage-type
valid-package-def
& #829keywords-type
valid-package-def
& #830license-type
valid-package-def
& #831main-type
valid-package-def
& #832man-type
valid-package-def
&valid-name
name-type
valid-package-def
no-duplicate-properties
valid-package-def
& #833optionalDependencies-type
valid-package-def
& #834os-type
valid-package-def
& #835peerDependencies-type
valid-package-def
& #836preferGlobal-type
valid-package-def
& #837private-type
valid-package-def
& #838repository-type
valid-package-def
& #839scripts-type
valid-package-def
& #840valid-values-author
valid-package-def
& #826valid-values-engines
valid-package-def
& #830valid-values-license
valid-package-def
valid-values-name-scope
valid-package-def
valid-values-private
valid-package-def
valid-values-publishConfig
valid-package-def
&valid-version
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-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:
The text was updated successfully, but these errors were encountered: