{"id":28141439,"url":"https://github.com/experience-monks/adviser","last_synced_at":"2025-05-14T18:15:26.694Z","repository":{"id":35061744,"uuid":"175279486","full_name":"Experience-Monks/adviser","owner":"Experience-Monks","description":"Jam3 quality advisor. Integrates checking for best practices at Jam3","archived":false,"fork":false,"pushed_at":"2023-04-21T13:55:04.000Z","size":3620,"stargazers_count":11,"open_issues_count":24,"forks_count":3,"subscribers_count":34,"default_branch":"master","last_synced_at":"2025-03-30T09:01:54.883Z","etag":null,"topics":["accessibility","best-practices","performance","security"],"latest_commit_sha":null,"homepage":"https://jam3.github.io/adviser","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Experience-Monks.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-03-12T19:05:11.000Z","updated_at":"2024-08-12T19:46:40.000Z","dependencies_parsed_at":"2023-01-15T13:01:05.404Z","dependency_job_id":null,"html_url":"https://github.com/Experience-Monks/adviser","commit_stats":null,"previous_names":["experience-monks/adviser","jam3/adviser"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Experience-Monks%2Fadviser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Experience-Monks%2Fadviser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Experience-Monks%2Fadviser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Experience-Monks%2Fadviser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Experience-Monks","download_url":"https://codeload.github.com/Experience-Monks/adviser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198432,"owners_count":22030966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accessibility","best-practices","performance","security"],"created_at":"2025-05-14T18:13:11.494Z","updated_at":"2025-05-14T18:15:26.681Z","avatar_url":"https://github.com/Experience-Monks.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://terminalizer.com\"\u003e\n    \u003cimg src=\"docs/logo.jpg\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# Adviser\n\n[![npm](https://img.shields.io/npm/v/adviser.svg)](https://www.npmjs.com/package/adviser)\n[![npm](https://img.shields.io/npm/l/adviser.svg)](https://github.com/jam3/adviser/blob/master/LICENSE)\n[![Build Status](https://travis-ci.org/Jam3/adviser.svg?branch=master)](https://travis-ci.org/Jam3/adviser)\n[![Known Vulnerabilities](https://snyk.io/test/github/jam3/adviser/badge.svg)](https://snyk.io/test/github/jam3/adviser)\n![npm](https://img.shields.io/npm/dm/adviser)\n[![Maintainability](https://api.codeclimate.com/v1/badges/c3e02561069853a74f9b/maintainability)](https://codeclimate.com/github/Jam3/adviser/maintainability)\n\n\u003e Modular task runner with a linter fashion\n\n\u003e https://jam3.github.io/adviser\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"/docs/cli.svg?sanitize=true\"/\u003e\u003c/p\u003e\n\n\u003e Thanks [@pedrohsbarroso](https://twitter.com/pedrohsbarroso) for the logo\n\n---\n\n# Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [Built in rules](#built-in-rules)\n- [Release](#release)\n- [Tests](#tests)\n- [API](#api)\n- [Contributing](#contributing)\n- [Support](#support)\n- [Related](#related)\n- [License](#license)\n\n## Installation\n\n```\nnpm install -g adviser\n```\n\n## Usage\n\nAdviser's goal is to run rules defined in a configuration file. It doesn't get involve in what the rules do; it just run them and control them.\n\nIn order to use it, you need to:\n\n1. Create a configuration file\n2. (Optional) Install the plugins you've like to use\n3. Set the rules we want to use\n\n### Run adviser\n\n`$ adviser`\n\nIf you run adviser without any arguments it will try to find a valid configuration file in the current directory and continues in through the parent directories until find a configuration file.\n\n### CLI Arguments\n\n`-c, --config` Specify config file path\n\n`-i, --init` Run config initialization wizard\n\n`-d, --debug` Output debugging information\n\n`-V, --verbose` Display extra information\n\n`-t, --tags` Run rules that match tags\n\n`-h, --help` Show help\n\n`-v, --version` Output the version number\n\n### Configuration example file\n\n```\n{\n  \"plugins\": [\"plugin1\", \"plugin2\"],\n  \"rules\": {\n    \"plugin1/exampleWarnRule\": \"warn\",\n    \"plugin1/exampleErrorRule\": \"error\",\n    \"plugin1/exampleOffRule\": \"off\",\n    \"plugin2/exampleNumberWarnRule\": 1,\n    \"plugin2/exampleNumberErrorRule\": 2,\n    \"plugin2/exampleNumberOffRule\": 0,\n    \"plugin2/exampleFullWarnRule\": [\"warn\", {options: 'options'}],\n    \"plugin2/exampleFullErrorRule\": [\"error\", {name: 'plugin'}],\n    \"plugin2/exampleFullNumberWarnRule\": [1, {name: 2}],\n    \"plugin2/exampleFullNumberErrorRule\": [2, {}]\n  }\n}\n```\n\n## Built in rules\n\nAll the rules documentation is located inside `/docs/rules`\n\n_Rules_:\n\n- package-json-properties: Includes options to restrict and blocklist properties on the package.json\n- root-files: Includes options to restrict and blocklist files on the root directory.\n\n## Release\n\nTo releasing new versions we are using [standard-version](https://github.com/conventional-changelog/standard-version).\n\nSteps:\n\n1. When PRs/commits land to your master branch, select the Squash and Merge option.\n2. Add a title and body that follows the [Conventional Commits Specification](https://www.conventionalcommits.org).\n3. Run `$ git checkout master; git pull origin master`\n4. Run `$ npm run release`\n5. Run `$ git push --follow-tags origin master \u0026\u0026 npm publish`\n\n## Tests\n\n### Unit Tests\n\nThere is a small set of tests implemented using Jest, to run them use: `$ npm test`\n\n### Integration Tests\n\nTo test `adviser` running with built-in rules, run `$ npm run adviser` on the directory `__tests__/integration`\n\n#### External Plugins\n\nTo use plugins and rules you can install one of the plugins created by the same team that created adviser:\n\n- [https://github.com/Jam3/adviser-plugin-dependencies](https://github.com/Jam3/adviser-plugin-dependencies)\n- [https://github.com/Jam3/adviser-plugin-audit-npm](https://github.com/Jam3/adviser-plugin-audit-npm)\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting\npull requests.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexperience-monks%2Fadviser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexperience-monks%2Fadviser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexperience-monks%2Fadviser/lists"}