monolinter v1.0.5
Monolinter
When woriking in a monorepo, often we find that some subprojects's package dependencies diverge, leading to unexpected results. Monolinter reads all provided package.json's files and validates their consistency. The validation can be run as part of your CI/CD process.
Note: validations are useful / can be applied even if your project only has one package.json
Monolinter was designed to be modular and easily extensible with validation modules
Validation Modules:
Consistent package versions: Checks that packages declared accross subprojects have matching versions. For example if
app1/package.jsonhas a dependency todepAversion1.0.0butapp2/package.jsonhas a dependency todepAversion2.0.0the validation will failDuplicate packages: withing the same file, it prevents duplicate declaration of the same package, this happens accross
devDependenciesanddependencies. If the same dependencydepAis found more than once in dependencies ofpackage.json.Exact package versions: prevents using fuzzy versions (starting with
^or~) that might cause inconsistent builds. For example ifpackage.jsoncontainsdepAversion^1.0.0this validation will fail as^1.0.0might lead to inconsistencies.Related packages: some packages should have matching versions. For example
"react-native-web"and"babel-plugin-react-native-web". Hoever there's no way to enforce that until now. Please contribute more such packages to this repo.
Installation
yarn add monolinter -dUsage
Create a file called .monolinterrc in your root folder with the following configuration:
{
"include":["package.json","mypackagespath/**/package.json"]
}the included paths can be glob expressions.
In order to run from command line, you can call it directly instead
yarn monolinter package.json [list of globs to other package.json files]Contributing
Contributions are welcome, please create a PR, open an issue or start a discussion.
Tutorial Credits for creating this package: https://itnext.io/step-by-step-building-and-publishing-an-npm-typescript-package-44fe7164964c
https://medium.com/jspoint/creating-cli-executable-global-npm-module-5ef734febe32