{"_id":"@attilagyongyosi/path-linter","_rev":"14-b659fa21b751a31a514f8ebc214ab51e","name":"@attilagyongyosi/path-linter","dist-tags":{"latest":"2.1.5","rc":"2.0.0-rc.2"},"versions":{"1.2.0":{"name":"@attilagyongyosi/path-linter","version":"1.2.0","description":"Linter for consistent directory and file naming","main":"lib/main.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"clean":"rimraf ./lib","lint":"eslint src/**/*.ts","build":"yarn lint && yarn clean && webpack --config ./webpack.config.ts && chmod +x lib/main.js","build:watch":"yarn build -w","test-run:default":"yarn build && node lib/main.js","test-run":"yarn build && node lib/main.js --config sample-config.json","test:unit":"jest","test:integration":"yarn build && jest -c jest.integration.config.js","test":"yarn test:unit && yarn test:integration"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/main.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"husky":{"hooks":{"pre-commit":"yarn lint","pre-push":"yarn test && yarn build"}},"devDependencies":{"@attilagyongyosi/eslint-config":"0.2.0","@babel/core":"7.5.5","@types/node":"10.14.16","@types/jest":"24.0.18","@types/webpack":"4.39.1","@typescript-eslint/parser":"2.0.0","@typescript-eslint/eslint-plugin":"2.0.0","babel-jest":"24.9.0","awesome-typescript-loader":"5.2.1","eslint":"6.2.2","husky":"3.0.4","jest":"24.9.0","rimraf":"3.0.0","ts-jest":"24.0.2","ts-node":"8.3.0","typescript":"3.5.3","webpack":"4.39.2","webpack-cli":"3.3.7"},"gitHead":"7c365b8b69b87ce4819c004e3e9e5a76530cb884","_id":"@attilagyongyosi/path-linter@1.2.0","_nodeVersion":"10.16.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-tt6cTvTGG4qmwD5cMCPt+DuaiwKjkS5j+4lYCOQC2JTeUylWD/FG8LGbwHDoGb1zHCRH8yoqdoIkT7pyFDvb4g==","shasum":"48c336cb5572a6c9d115cadeabb6a063a9cfc80b","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-1.2.0.tgz","fileCount":4,"unpackedSize":11372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZbd8CRA9TVsSAnZWagAAh/kP/2smcJSHzEKqBZmhfaEF\nEyvneMFKqOaftz8D31EfACr2C0XoSwtvc0pu7ctWWj+yM+2PmbKz89jxSgPF\neoJLwxlvMVsfTvspQoBW1dplEU7vDAgvNtt6xZceTBQV9ikDIvSAaw92sWKt\nuyNGN1fHC8dzE3T2D7unNr4+bcSjdjzPj+7VA71LvbMOVwBDONOiDiRVtzfi\nvuo4sBiDnoibLA+u8xwGDZB1Eo+POjUezndCROFI9Gm5SAl55XPCDFsJYKs3\nqZukKHqfwMKSxtIpQLg8VQT4pdfSO6nACHCRXXBfcxHcMRB27ZUi7qEFCjSN\nnnVg33Vx/Ec7bB+JnlEog9IPns9bvIR8j44UPa+3qWTIAAqfdQrCiXl9eCgM\n8fDlCnW14BwdXifpjdAyFR9bkKDy/CmbyjhXoiB20dHNgdqyzNfy7EK50BwQ\naaOIJ2dFfXowq0VRNOKgC9vdZuLhVHZlullWWuznQoSArpO9PIokL+e+Grm5\n3ab5q8xwhTRYWENHOUs0GiHpxPb4ZL23ZniGfIGqKz0i3W7w6wPl74niqn9n\nxgNPxXLEILEqF6EYVK3O4jn16ViXvyZfc944B97aSUxQ4PZaRwEiARRtReOA\nRYivhPwEQHAXozaMEjkZgmw+/+fYYqs6LX4aRy7PTY3M2hs+Iabovw5vlGzC\n3Ubx\r\n=BR9N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBto2w9afPHMdaYMK86VgesI9cRXEMGeiiFhoEk/KP0bAiEA9DG9agJQUdyDOUj4iM5wXpXPLbc/L5tCaAzusgFbocQ="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_1.2.0_1566947195537_0.47974609263607326"},"_hasShrinkwrap":false},"2.0.0-rc.0":{"name":"@attilagyongyosi/path-linter","version":"2.0.0-rc.0","description":"Linter for consistent directory and file naming","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"clean":"rimraf ./lib","lint":"eslint src/**/*.ts","build":"parcel build src/index.ts --no-source-maps --target node --out-dir lib && chmod +x lib/index.js","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json --colorize","test:unit":"jest --runInBand","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test":"yarn test:unit && yarn test:integration","release:patch":"release-it patch","release:minor":"release-it minor","release:major":"release-it major","release:major:pre":"yarn release:major --preRelease=rc"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/eslint-config":"0.2.0","@commitlint/cli":"8.2.0","@commitlint/config-conventional":"8.2.0","@types/node":"10.14.19","@types/jest":"24.0.18","@typescript-eslint/parser":"2.3.2","@typescript-eslint/eslint-plugin":"2.3.2","eslint":"6.5.1","husky":"3.0.8","jest":"24.9.0","parcel-bundler":"1.12.3","parcel-plugin-shebang":"1.2.8","release-it":"12.4.2","rimraf":"3.0.0","ts-jest":"24.1.0","typescript":"3.6.3"},"readme":"[![npm version](https://badge.fury.io/js/%40attilagyongyosi%2Fpath-linter.svg)](https://badge.fury.io/js/%40attilagyongyosi%2Fpath-linter)\r\n\r\n# @attilagyongyosi/path-linter\r\nLightweight, zero-dependency library to lint file paths in a project.\r\n\r\n## But why?\r\nWell, my therapist says that I'm a bit too keen on static analysis.\r\nI can't really help it though, so recently, I started to look for a way to\r\nenforce a file naming convention for a big software project.\r\n\r\nThe NPM registry is not overly saturated with solutions to this problem, and\r\nthe ones I found left me hungry for more. Some way or the other, there was always\r\nsomething bothering me.\r\n\r\nFor a while, I also wanted to do some open source project on my own, just for the sake\r\nof trying myself in this game.  \r\nSo here it is!\r\n\r\nIt is currently **~8kb in size**, comes with **no dependencies**. The size could be smaller, I sacrificed it a bit on the altar \r\nof structural well-being.\r\n\r\nEnjoy!\r\n\r\n## Neat things\r\n* ~8kb package size\r\n* no dependencies\r\n* supports file extension linting\r\n* supports different naming convention per folder\r\n* did I say it's flexible? It uses regular expressions, after all\r\n* 100% test coverage\r\n\r\n## Installing\r\n`path-linter` should be added as a `devDependency`:\r\n```bash\r\nnpm install --save-dev @attilagyongyosi/path-linter\r\n```\r\nor\r\n```bash\r\nyarn add --dev @attilagyongyosi/path-linter\r\n```\r\n\r\n## Configuration\r\n`path-linter` needs a JSON configuration file somewhere in your project where you specify\r\nyour linting rules.\r\n\r\nYou can specify different linting rules for different directories in your project.\r\nRules can either be a regular expression or one of the built-in naming conventions that\r\n`path-linter` supports out of the box.\r\n\r\nThese include, at the moment:\r\n- `kebab-case`\r\n\r\nExample:\r\n```json\r\n{\r\n    \"rules\": [{\r\n        \"directory\": \"src\",\r\n        \"rule\": \"kebab-case\"\r\n    }, {\r\n        \"directory\": \"tests\",\r\n        \"rule\": \".*\\\\.spec\\\\.ts\"\r\n    }]\r\n}\r\n```\r\n\r\nYou can also find an example in [sample-config.json](sample-config.json).\r\n\r\n## Usage\r\nWire it into your NPM scripts in `package.json`.  \r\nFor example:\r\n```json\r\n{\r\n    \"scripts\": {\r\n        \"lint:paths\": \"path-linter --config some-config.json --colorize\"\r\n    }\r\n}\r\n```\r\nThen you can execute it with  \r\n```bash\r\nnpm run lint:paths\r\n```\r\nor\r\n```bash\r\nyarn lint:paths\r\n```\r\n\r\n`--config <path>`  \r\nSpecifies the relative path to a configuration file. If not specified, the library will try to look up a \r\n`path-linter.json` file in the project root.\r\n\r\n`--colorize`  \r\nEnables colorization for the console output.\r\n\r\n## Contributing\r\nFeel free to open issues or pull requests if you have some improvement on the library. I'm open to everything!\r\n\r\n## Authors\r\n* **Attila Gyöngyösi** - [GitHub](https://github.com/attilagyongyosi)\r\n\r\n## License\r\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\r\n","readmeFilename":"README.md","gitHead":"d1fe23a9aab526cf4f5843b4c2e0cc3434514d2e","_id":"@attilagyongyosi/path-linter@2.0.0-rc.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-+aPgud/4NRfaiwDWsmG1q0Zdr988Gu28N3MJjj9yXf8xKjpi235s7/8VXuxlVNrJdf7MwPekpL5tPSH78LueYQ==","shasum":"e6e0a3b14fecead99c4a1a9db69f1df9669ce865","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.0.0-rc.0.tgz","fileCount":4,"unpackedSize":15626,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlRnCCRA9TVsSAnZWagAAghoP/jbDLoBOAB6ZnrCHCO3o\nxVVtRpShexfgUNczNWoFqrOyeuUtAAwBvulCQS1LyDVWtnRawtEfg2eTti46\nq/LFGTUAys2CvGpQZsd7sX86kLnfGiqTgUlD0duKimnaSCoe+wA+oMzxdXSt\nxHjScbWGQd4g5LEP8UsBFW2nVLruWbfrPGc3fUcCQ6fNiRvagWjJJL81DCEK\nfxH+KSbXngpTjyTsS4SkuaNjLHz/Epk8IrDfcUpLV6GFs1Yf3yTUdDtsvobZ\nBPUibI21dEQiiaXvvIPGzUXFeWMCZ0uFEZazWK7OoNYKKWSRbrf9ecUPhQSB\nFDa3A711x6mpHwJebGDP34exV52o+eX+jwxVYRy/GFPHCZKJk1+HFclHsrKk\nmIeXLN1hOiGS4pxdF9KBpeAk54Kd0ZBukEe6SNVt8oz5TRHGtZVwTwHdYEzA\nAAEZnLBttHyAf2mC1t2YP8cQZ4YBLNSosNemLl/WnM0lTnTUQe7khPjIeYD6\n7Ycq8vr5BDfom8KKyrYJMDnYYF5ylIdvpDm+08R3JWxvy2TD1R3mmpZBnz+S\nyeR/0n/tPq6jmkCYVJXSSCMgrliWQ/FuZqJJTQCszrDQGTsNTD/VAVEutrQB\nTIGg2KyOzz+WlitQywIoyUf2OEZjAvbgsszUNh36wecwj815F940COtwAoBS\n9+Z4\r\n=W+jY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID6Bmf6kgxGumhu7wwlALymziKNY6lF4FISOiuNIw1TXAiEAvfNigPATrzWSr05Yl6j4Lj1VkpVkIOy2V20fREQIhqs="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.0.0-rc.0_1570052545701_0.91955371025975"},"_hasShrinkwrap":false},"2.0.0-rc.1":{"name":"@attilagyongyosi/path-linter","version":"2.0.0-rc.1","description":"Linter for consistent directory and file naming","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"deps:check":"ncu","clean":"rimraf ./lib","lint":"eslint src/**/*.ts","build":"parcel build src/index.ts --no-source-maps --target node --out-dir lib && chmod +x lib/index.js","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json --colorize","test:unit":"jest --runInBand","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test":"yarn test:unit && yarn test:integration","release:patch":"release-it patch","release:minor":"release-it minor","release:major":"release-it major","release:major:pre":"yarn release:major --preRelease=rc"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/eslint-config":"0.3.0","@commitlint/cli":"8.2.0","@commitlint/config-conventional":"8.2.0","@types/node":"10.14.19","@types/jest":"24.0.18","@typescript-eslint/parser":"2.3.2","@typescript-eslint/eslint-plugin":"2.3.2","eslint":"6.5.1","husky":"3.0.8","jest":"24.9.0","npm-check-updates":"3.1.23","parcel-bundler":"1.12.3","parcel-plugin-shebang":"1.2.8","release-it":"12.4.2","rimraf":"3.0.0","ts-jest":"24.1.0","typescript":"3.6.3"},"readme":"[![npm version](https://badge.fury.io/js/%40attilagyongyosi%2Fpath-linter.svg)](https://badge.fury.io/js/%40attilagyongyosi%2Fpath-linter)\r\n\r\n# @attilagyongyosi/path-linter\r\nLightweight, zero-dependency library to lint file paths in a project.\r\n\r\n## But why?\r\nWell, my therapist says that I'm a bit too keen on static analysis.\r\nI can't really help it though, so recently, I started to look for a way to\r\nenforce a file naming convention for a big software project.\r\n\r\nThe NPM registry is not overly saturated with solutions to this problem, and\r\nthe ones I found left me hungry for more. Some way or the other, there was always\r\nsomething bothering me.\r\n\r\nFor a while, I also wanted to do some open source project on my own, just for the sake\r\nof trying myself in this game.  \r\nSo here it is!\r\n\r\nIt is currently **~10kb in size**, comes with **no dependencies**. The size could be smaller, I sacrificed it a bit on the altar \r\nof structural well-being.\r\n\r\nEnjoy!\r\n\r\n## Neat things\r\n* ~10kb package size\r\n* no dependencies\r\n* supports file extension linting\r\n* supports different naming convention per folder\r\n* did I say it's flexible? It uses regular expressions, after all\r\n* 100% test coverage\r\n\r\n## Installing\r\n`path-linter` should be added as a `devDependency`:\r\n```bash\r\nnpm install --save-dev @attilagyongyosi/path-linter\r\n```\r\nor\r\n```bash\r\nyarn add --dev @attilagyongyosi/path-linter\r\n```\r\n\r\n## Configuration\r\n`path-linter` needs a JSON configuration file somewhere in your project where you specify\r\nyour linting rules.\r\n\r\nYou can specify different linting rules for different directories in your project.\r\nRules can either be a regular expression or one of the built-in naming conventions that\r\n`path-linter` supports out of the box.\r\n\r\nThese include, at the moment:\r\n- `kebab-case`\r\n\r\nYou can also configure linting severity in the top-level `severity` configuration property.  \r\n\r\nIt is `error` by default which will fail the linting process when file path do not adhere\r\nto configured conventions, or can be `warning` to just log warnings on failing files.\r\n\r\nExample:\r\n```json\r\n{\r\n    \"severity\": \"warning\",\r\n    \"rules\": [{\r\n        \"directory\": \"src\",\r\n        \"rule\": \"kebab-case\"\r\n    }, {\r\n        \"directory\": \"tests\",\r\n        \"rule\": \".*\\\\.spec\\\\.ts\"\r\n    }]\r\n}\r\n```\r\n\r\nYou can also find an example in [sample-config.json](sample-config.json).\r\n\r\n## Usage\r\nWire it into your NPM scripts in `package.json`.  \r\nFor example:\r\n```json\r\n{\r\n    \"scripts\": {\r\n        \"lint:paths\": \"path-linter --config some-config.json --colorize\"\r\n    }\r\n}\r\n```\r\nThen you can execute it with  \r\n```bash\r\nnpm run lint:paths\r\n```\r\nor\r\n```bash\r\nyarn lint:paths\r\n```\r\n\r\n`--config <path>`  \r\nSpecifies the relative path to a configuration file. If not specified, the library will try to look up a \r\n`path-linter.json` file in the project root.\r\n\r\n`--colorize`  \r\nEnables colorization for the console output.\r\n\r\n## Contributing\r\nFeel free to open issues or pull requests if you have some improvement on the library. I'm open to everything!\r\n\r\n## Authors\r\n* **Attila Gyöngyösi** - [GitHub](https://github.com/attilagyongyosi)\r\n\r\n## License\r\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\r\n","readmeFilename":"README.md","gitHead":"3370da33fc0d696fe2c39b999338305bc987e894","_id":"@attilagyongyosi/path-linter@2.0.0-rc.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-LybTkVKnuRCMxp0RoaaZZbkoWHtmWSphPEUONjyPqOcYarfwLbVUZC+MsaftIou7iQG9gND+TqOXB1uNZKEEvQ==","shasum":"9c4bc816607fa7ede2f298383976b1664bb0fc3b","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.0.0-rc.1.tgz","fileCount":4,"unpackedSize":17331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdmKopCRA9TVsSAnZWagAAzt8P/2MUxwV16t+jbTQ8Lfev\nZzikuBdPoJ7X4yNNTE0B9SwYcVoak6UvYBQhihQ7BkIBIGTJGjnE1du3AJ39\ns0L4ZTwgz6QDTplrJ7FZpDgI7MIdoMgG8SvaXW5KCBQWpMYQFYgKWxkYkNkK\nxDqPXo3c++4GLGYiARLtiNh3+6g8Svr1MHOr6QCaQ3SPnOcaDNO0tCYFGtIS\nmy8fHyjButf6lUd7EK9HeMOouxfxFog5iztDvBQJMBSEWe5jGxZ0T1WWUOGk\nfSAutUa/sJHwYE2TxS5Wb0du31+XQGBsif6iBQz8FLkosoYaRJsPZyrupAXB\npJPrQ9514wtlgTX8MC9ra8TKwo+DdpuiXYWZKyUy1oP8P7jWnlOxEymgnx7e\nTrmsaDgupTs7SDwB9D5tQAa+duuodPotv02kTLpQA3ek/rqpOiiRqMkf8+1r\n1/U1AkP+Hj6gFUGjnocSObSyCC0D/aGNMh7R8PZAzd/8OofowVSz23YRL8l4\nYUbNsjsDdp3c9i/TEjIzZmFqp7I+0fslB4lJEGPR7jtuvS6j+LdADQjhGC1/\niZNoWSZAZ68ZB5C16mhQ3yq23jcIVCiMH3Nh/i4sP5UXsoV/sxTtvBz9W73d\nkFm9wnkX2z8n3pLeR94o7LqJ8HKxasE1qLXyxRez7uapXWcfDcSTXnOVGXzO\njvCQ\r\n=746t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGp7WJUNTl2pMyozwZGmvbzhxNOtUYnTV2IR+O3/q1EvAiBdcuTRzHH1kbSRiQmoF5DPpN10UVrJ7mGcrYLYDWY4JA=="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.0.0-rc.1_1570286121354_0.9442634568832409"},"_hasShrinkwrap":false},"2.0.0-rc.2":{"name":"@attilagyongyosi/path-linter","version":"2.0.0-rc.2","description":"Linter for consistent directory and file naming","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"deps:check":"ncu","clean":"rimraf ./lib","lint:ts":"eslint src/**/*.ts","lint:paths":"path-linter --colorize","lint":"run-p lint:*","build":"parcel build src/index.ts --no-source-maps --target node --out-dir lib && chmod +x lib/index.js","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json --colorize","test:unit":"jest --runInBand","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test":"yarn test:unit && yarn test:integration","release:patch":"release-it patch","release:minor":"release-it minor","release:major":"release-it major","release:major:pre":"npm run release:major -- --preRelease=rc"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/path-linter":"2.0.0-rc.1","@attilagyongyosi/eslint-config":"0.3.0","@commitlint/cli":"8.2.0","@commitlint/config-conventional":"8.2.0","@types/node":"10.14.19","@types/jest":"24.0.18","@typescript-eslint/parser":"2.3.3","@typescript-eslint/eslint-plugin":"2.3.3","eslint":"6.5.1","husky":"3.0.8","jest":"24.9.0","npm-run-all":"4.1.5","npm-check-updates":"3.1.24","parcel-bundler":"1.12.4","parcel-plugin-shebang":"1.2.8","release-it":"12.4.3","rimraf":"3.0.0","ts-jest":"24.1.0","typescript":"3.6.3"},"readme":"[![npm version](https://badge.fury.io/js/%40attilagyongyosi%2Fpath-linter.svg)](https://badge.fury.io/js/%40attilagyongyosi%2Fpath-linter)\r\n\r\n# @attilagyongyosi/path-linter\r\nLightweight, zero-dependency library to lint file paths in a project.\r\n\r\n## But why?\r\nWell, my therapist says that I'm a bit too keen on static analysis.\r\nI can't really help it though, so recently, I started to look for a way to\r\nenforce a file naming convention for a big software project.\r\n\r\nThe NPM registry is not overly saturated with solutions to this problem, and\r\nthe ones I found left me hungry for more. Some way or the other, there was always\r\nsomething bothering me.\r\n\r\nFor a while, I also wanted to do some open source project on my own, just for the sake\r\nof trying myself in this game.  \r\nSo here it is!\r\n\r\nIt is currently **~10kb in size**, comes with **no dependencies**. The size could be smaller, I sacrificed it a bit on the altar \r\nof structural well-being.\r\n\r\nEnjoy!\r\n\r\n## Neat things\r\n* ~10kb package size\r\n* no dependencies\r\n* supports file extension linting\r\n* supports different naming convention per folder\r\n* did I say it's flexible? It uses regular expressions, after all\r\n* 100% test coverage\r\n\r\n## Installing\r\n`path-linter` should be added as a `devDependency`:\r\n```bash\r\nnpm install --save-dev @attilagyongyosi/path-linter\r\n```\r\nor\r\n```bash\r\nyarn add --dev @attilagyongyosi/path-linter\r\n```\r\n\r\n## Configuration\r\n`path-linter` needs a JSON configuration file somewhere in your project where you specify\r\nyour linting rules.\r\n\r\nYou can specify different linting rules for different directories in your project.\r\nRules can either be a regular expression or one of the built-in naming conventions that\r\n`path-linter` supports out of the box.\r\n\r\nThese include, at the moment:\r\n- `kebab-case`\r\n\r\nYou can also configure linting severity in the top-level `severity` configuration property.  \r\n\r\nIt is `error` by default which will fail the linting process when file path do not adhere\r\nto configured conventions, or can be `warning` to just log warnings on failing files.\r\n\r\nExample:\r\n```json\r\n{\r\n    \"severity\": \"warning\",\r\n    \"rules\": [{\r\n        \"directory\": \"src\",\r\n        \"rule\": \"kebab-case\"\r\n    }, {\r\n        \"directory\": \"tests\",\r\n        \"rule\": \".*\\\\.spec\\\\.ts\"\r\n    }]\r\n}\r\n```\r\n\r\nYou can also find an example in [sample-config.json](sample-config.json).\r\n\r\n## Usage\r\nWire it into your NPM scripts in `package.json`.  \r\nFor example:\r\n```json\r\n{\r\n    \"scripts\": {\r\n        \"lint:paths\": \"path-linter --config some-config.json --colorize\"\r\n    }\r\n}\r\n```\r\nThen you can execute it with  \r\n```bash\r\nnpm run lint:paths\r\n```\r\nor\r\n```bash\r\nyarn lint:paths\r\n```\r\n\r\n`--config <path>`  \r\nSpecifies the relative path to a configuration file. If not specified, the library will try to look up a \r\n`path-linter.json` file in the project root.\r\n\r\n`--colorize`  \r\nEnables colorization for the console output.\r\n\r\n## Contributing\r\nFeel free to open issues or pull requests if you have some improvement on the library. I'm open to everything!\r\n\r\n## Authors\r\n* **Attila Gyöngyösi** - [GitHub](https://github.com/attilagyongyosi)\r\n\r\n## License\r\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\r\n","readmeFilename":"README.md","gitHead":"117d28f8249958086704acfd199658dff3859e79","_id":"@attilagyongyosi/path-linter@2.0.0-rc.2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-5oArjqRcMe4B1cmloYrs93Up91twoLDPXpgDZG947mvLZBZ5ObPGew5N0mSaSxtaiIYezXeCxEyuyytjgGlBQA==","shasum":"e48b93c7679c669cb1b03b690dd0809fea35f0ad","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.0.0-rc.2.tgz","fileCount":4,"unpackedSize":18308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqjuACRA9TVsSAnZWagAA+ioP/1/0+nb3tmnZLmaztJ+u\nZdTK4d+/fcE5R9yfw8g8T4xnPvxEMzcLVTUlWCprzBR5R1pMCaVA/ju8EetP\nhbjHOOLHaEBTI+Txb2gXmFmuSIqGYOUmSxvrVxe4v4fP9HPikcOfhQYDM1Wi\n0wWwnHi4jZy/SusCDtIdISPcanb98w8UL1R3rA/A6V1cYYj2rVFN+DEINfdm\nBK/03WoqIraWvbBt7cm7p9h4yP7p9EPES1yA48kmyLSLq3EGj5aWoJUy6Oss\nqbBjoke8RZWMIhna1h8ind3VFnzDpLFQjmUsAmRjfgZUPcjOz47+seX5LB9g\nClzk+UvpU1IObEIZzHgrn0AOB2Ka1zjQzFQwok2/PB/FG1Zqq9CeyiXdSSnd\nCo3dSrr/FVooMPH6Wco+37Gxyk9sh/xRGBhf8iYGW/Ztke+0uMnVGsMpdkqZ\nzGNVpn5K+Nhbg+qk/KpGerpyCedxRslNTDblYSnn7JuVguX9RzFujiv5nh2L\nB7XmgYgAMmaxs5WfVQOU48OvqgV74B5hTqkKMsvJugMMLd9hPJKJdyhVmN4/\nWEgaRsgQ0Ipt3/cZJzF+cZwqvvc52BLpd+skRU5r1ugH8IyIBTAFp+vsHya8\nAyy8nZVSPzTNXrsRDE06eXFcfyphjooAkQF5dRzxoSQ/59CpwkwNb0TdJUWK\nSF0s\r\n=v51z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxUdovvQytjZ2eU73TmckAV+BT4ZfDMDTTIdj1S130TQIhALTNtHE1hOhiP+rceVxiGuNeCuWYXHlvtoL1gBNs17n8"}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.0.0-rc.2_1571437439518_0.21231604676648685"},"_hasShrinkwrap":false},"2.0.0":{"name":"@attilagyongyosi/path-linter","version":"2.0.0","description":"Linter for consistent directory and file naming","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"deps:check":"ncu","clean":"rimraf ./lib","lint:ts":"eslint src/**/*.ts","lint:paths":"path-linter --colorize","lint":"run-p lint:*","build":"parcel build src/index.ts --no-source-maps --target node --out-dir lib && chmod +x lib/index.js","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json --colorize","test:unit":"jest --runInBand && yarn test:badges:unit","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test":"yarn test:unit && yarn test:integration","test:badges:unit":"yarn jest-coverage-badges --input generated/jest-coverage/unit/coverage-summary.json --output badges/coverage-unit","release:patch":"release-it patch","release:minor":"release-it minor","release:major":"release-it major","release:major:pre":"npm run release:major -- --preRelease=rc"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/path-linter":"2.0.0-rc.2","@attilagyongyosi/eslint-config":"0.3.0","@commitlint/cli":"8.2.0","@commitlint/config-conventional":"8.2.0","@types/node":"10.14.19","@types/jest":"24.0.19","@typescript-eslint/parser":"2.4.0","@typescript-eslint/eslint-plugin":"2.4.0","eslint":"6.5.1","husky":"3.0.9","jest":"24.9.0","jest-coverage-badges":"1.1.2","npm-run-all":"4.1.5","npm-check-updates":"3.1.24","parcel-bundler":"1.12.4","parcel-plugin-shebang":"1.2.8","release-it":"12.4.3","rimraf":"3.0.0","ts-jest":"24.1.0","typescript":"3.6.4"},"gitHead":"cb300bc330e071875ed118edf29c59756dde67f8","_id":"@attilagyongyosi/path-linter@2.0.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-mxKhrQyO5PGmPcIty5VFV0YO+LvuZmii0hrjUxnBE07lvuqMLDZ77KSYscy5sMZZjQzck9QP2ckIYO94V4UzzQ==","shasum":"fc2dcf010396274f46e502b09d6aed6270c404cd","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.0.0.tgz","fileCount":4,"unpackedSize":21170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqxQwCRA9TVsSAnZWagAAdIIP/ixqfYBLMAeE37CfJap8\nNgQWJ0uV/9sfoNT2Ptj82SnOCqdYuQm3mdcai+FPtOt92L6WODS+Zn14/0Yd\nSa7oHa7cvVKn2CSMfstxYMeQgdBsMGlbidpS+QDLmCj8y1Wa1naeq8KAr9i3\nsFvf7D2CkSWaOZEaqSq2FEOZ4a0hWHZD11Xj1T4jbhMxReSUBz1IgZ59b9Pt\n1BSRSypPl/pQYb6esNNa6V/G8H5Lg1quyx8ojU/jfzVd2YCp2fpc6cWJ1T08\nw5K7g2BKQOwPIgRqAnNg+otHyfmOW6pcdQKFECi/KWXhgAJpESpmyUVFWHUN\nBNGIrNVuO1DOa6lT6Uhg1hLTMn6t1Uwk5loVgwXI/io3jIR385tBz/EvylDh\n54e1JB3UrhOc7t83r08xksYH4sE2OsO1VlYrl/EZu0gDJE4uV50ZZ2zeDWSN\ntDGmjUcIc3OEKUkeEVIbRUyIfp1Fk1YYXlEEX5Sl0crYxCGtasHOajJ0dT2u\nDBhrnoeecLGsLNc2vL8ePa0ZPwm2Jh41G6EvzD4voe0k/RSdYsvpmGneKIXI\nV6O2S7FLGcjQ2IZr8OFXqr8B9keeP5pTw65nYlxWtTRT17K4K5xBF+ZJHU1f\ndjR3s5f9+3rgmQtv1LXRSRfyuedRIOM8bqI4Vgs/6a3gCN1MuFusfhf7TyDR\n7jDJ\r\n=GhEj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCx98iYwFptgIk0pmJRubKLoIJUOFZ6Kp4vl0kwOQ4FYgIgI2dtNxx0RhM9lAB4bSw/Taw9TBPYUrWcumj1L80JuMo="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.0.0_1571492911486_0.44291966534210303"},"_hasShrinkwrap":false},"2.1.0":{"name":"@attilagyongyosi/path-linter","version":"2.1.0","description":"Linter for consistent directory and file naming","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"clean":"rimraf ./lib","lint:ts":"eslint src/**/*.ts","lint:paths":"path-linter --colorize","lint":"run-p lint:*","build":"parcel build src/index.ts --no-source-maps --target node --out-dir lib","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json --colorize","test:unit":"jest --runInBand && yarn test:badges:unit","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test:watch":"jest --runInBand --watchAll","test":"yarn test:unit && yarn test:integration","test:badges:unit":"yarn jest-coverage-badges --input generated/jest-coverage/unit/coverage-summary.json --output badges/coverage-unit","release:patch":"release-it patch","release:minor":"release-it minor","release:major":"release-it major","release:major:pre":"npm run release:major -- --preRelease=rc"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/path-linter":"2.0.0","@attilagyongyosi/eslint-config":"0.4.0","@commitlint/cli":"8.3.5","@commitlint/config-conventional":"8.3.4","@types/node":"12.12.6","@types/jest":"24.9.1","@typescript-eslint/parser":"2.17.0","@typescript-eslint/eslint-plugin":"2.17.0","eslint":"6.8.0","husky":"4.2.1","jest":"25.1.0","jest-coverage-badges":"1.1.2","npm-run-all":"4.1.5","parcel-bundler":"1.12.4","parcel-plugin-shebang":"1.2.8","release-it":"12.4.3","rimraf":"3.0.0","ts-jest":"25.0.0","typescript":"3.7.5"},"gitHead":"0127cbf8051570dd3183cd7b3c22c5a9dcf1a3ba","_id":"@attilagyongyosi/path-linter@2.1.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-2Nczs8D2jCAAb8ch3Thj1Awn74IIUX82LPjSc3OvOyBSezHUBJOWWRvkVepG9bGRFImZRIUfqsrhFWUTdoRb7A==","shasum":"f5bf94baa2aba79e6fc9ae4259c647d5f6112223","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.1.0.tgz","fileCount":4,"unpackedSize":27939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeK3OQCRA9TVsSAnZWagAAvFEP/2b47lHUp7wHRJxJs5HE\nq5shFJAg/MSEUBBozMA/jOEwDZntMTgKMV+tORxGgvhdFx4xF84uH7dSNtqn\nS1G9ucymXumaE0T/erV0rTxvHY9uuRas8RjY9+Zt0TzHLpKC5Ga5ZXjgaojZ\nOH8+juUODG2r1f0wnJIsS8rwj79BVeUeXwb/4DOJaX/6SkRsuK4mjOnQIRz3\n7vuI5ne5Xp+S/70BZiuAftvZWNNPUnMFqzglwgo8ymmTd7pNXWy/XEVXW8j8\nqxh3uhA5eWmVYsFl7MgpL4TIcoHjQlxHjJWX+qCuH21/8eQGBeopocQLVV1X\nwUqMMvdIzW5tajld4JgE3kNXhUiBmPQvWkkWMojH7PjWSERpbcihR88yUMut\n6KSovs4d9NrVrlpVNJvNRr+QijGaXwUArvzFSPoEtHAnYZjyViu4ADZCtwn4\nTKHqykBg/hX5gCVzQP2Q9EA6UUVaqy8lmSZFQQ5oXkQs8FLCMlVKLHzDljRM\n11Dqr9/3V2ip9dBYBXRRud1EfOGEn/JrfpCNybmS0wDLVQJtQJbS/yB9eKh1\ntcK3yrITJDO5uB1dR4WCSSDNAYLhC9VR10oKriN9yCQjuua/w6F3QQ9WbKIm\nlX1vGBJQT0/+v5oDTe4qNDQOcG4LIJyuevbcuKEe2qYrGFb+uABRwABbwG5u\n7gN9\r\n=GPE9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYL+PDYbrZ3I4pQkRQgVnTKO52mHeAaZv0/0Fo7x+eTQIgRd3ZCwdlDvh4n6wjfTudxniCSLaUY1OlcMMHLmBRtME="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.1.0_1579905935539_0.6598676283447003"},"_hasShrinkwrap":false},"2.1.1":{"name":"@attilagyongyosi/path-linter","version":"2.1.1","description":"Linter for consistent directory and file naming","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"clean":"rimraf ./lib","lint:ts":"eslint src/**/*.ts","lint:paths":"path-linter --colorize","lint":"run-p lint:*","build":"parcel build src/index.ts --no-source-maps --target node --out-dir lib","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json --colorize","test:unit":"jest --runInBand && yarn test:badges:unit","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test:watch":"jest --runInBand --watchAll","test":"yarn test:unit && yarn test:integration","test:badges:unit":"yarn jest-coverage-badges --input generated/jest-coverage/unit/coverage-summary.json --output badges/coverage-unit","release:patch":"release-it patch","release:minor":"release-it minor","release:major":"release-it major","release:major:pre":"npm run release:major -- --preRelease=rc"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/path-linter":"2.1.0","@attilagyongyosi/eslint-config":"0.4.0","@commitlint/cli":"8.3.5","@commitlint/config-conventional":"8.3.4","@types/node":"12.12.6","@types/jest":"25.1.0","@typescript-eslint/parser":"2.18.0","@typescript-eslint/eslint-plugin":"2.18.0","eslint":"6.8.0","husky":"4.2.1","jest":"25.1.0","jest-coverage-badges":"1.1.2","npm-run-all":"4.1.5","parcel-bundler":"1.12.4","parcel-plugin-shebang":"1.2.8","release-it":"12.4.3","rimraf":"3.0.1","ts-jest":"25.0.0","typescript":"3.7.5"},"gitHead":"d3c4c2c6eaadb5ae3e30d3eec0b6dece68a14d2a","_id":"@attilagyongyosi/path-linter@2.1.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-W28d917MRxmh+/8qHjNJfwverXBxDDYEwFgPG501qzrn9FW3tL3tODx/mmz5jQXbf+WyLm/SgHZW4fW7JWO9RQ==","shasum":"093040938a029e0550f59a48341de9cc817ef14b","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.1.1.tgz","fileCount":4,"unpackedSize":28013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMBhPCRA9TVsSAnZWagAAGXwP/0TdovOU02GCO2t1A2oO\nOBpptnSIi9NPBE4k8Ype55Xk0YGtQ45AWMgEFKo9Plu4FsbfEFhIRrlB/Ep2\nADERRc2ncJHeyaKWBsTWcv41j4YAwbPJE/OIea13V3wnn5OYsw3/35TWZDLy\nJ2q/0GkQ+fWr2KbhgCbJbqLXG49kvaQfgoEKKxTSpM68RGUocXRqGaBkR08S\njAXlVURp30fB7kzV/4npXSlJUrfY8RbG+szV5W4Aq2zVlBCAsKGy8mbQ+xtg\n/nrDXN6QE9+YKCJQXUUfdjkzlkqlBKw9ABEq6UMxp/NguAlBqobZUi0jDKle\ndPo2fKAsIeKAfBtL+VijEgffHyk8RzShv/VSrffKw+1f14eLQWylSf9Rxvn0\nt3/Ct4N/rOc1Htzxrj8R1E1yKkaAPskpM2jcHUe1YBF7iE3lWsvIAA3+Cx6Y\nNHDh5QBRBPup66JVX65skB+3fIQnTZmy+b4QOZu/S2Iiv0ZmbVlQs73JLCcO\nN8BKA4sMTVtyvvBGGoc2cfRI2DeAgcDLaml3qNEM6OBUf9U5Wd3iftJzv5gx\nQU/X5X8BctaNR6wnLCdY1+c36XR9emSjcBCpL/IFFUeiH7AbYsh99TDcGpUO\nYRMLhkchHKz1SfrL9nl30fl/s7a+3DdQRLbur6K7OO3EeouzjTt/CrIa/IJ7\nfTjR\r\n=muI+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDHo9XCdaeS4Y0trXuGzaEoWG2wjbHXMqrTvuL8wNjlVAiEA3qT68H3KBMTS+6eFCnBavxYfvpSZ6oWQ8pIoU34wzcU="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.1.1_1580210254622_0.9636413580921184"},"_hasShrinkwrap":false},"2.1.2":{"name":"@attilagyongyosi/path-linter","version":"2.1.2","description":"Linter for consistent directory and file naming.","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"clean":"rimraf ./lib","lint:ts":"eslint src/**/*.ts","lint:paths":"path-linter --colorize","lint":"run-p lint:*","bundle":"rollup -c","test-run:default":"yarn bundle && node lib/index.js","test-run":"yarn bundle && node lib/index.js --config sample-config.json","test:unit":"jest --runInBand && yarn test:badges:unit","test:integration":"yarn bundle && jest --runInBand -c jest.integration.config.js","test:watch":"jest --runInBand --watchAll","test":"yarn test:unit && yarn test:integration","test:badges:unit":"yarn jest-coverage-badges --input generated/jest-coverage/unit/coverage-summary.json --output badges/coverage-unit","release:patch":"release-it patch","release:minor":"release-it minor","release:major":"release-it major","release:major:pre":"npm run release:major -- --preRelease=rc"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/path-linter":"2.1.1","@attilagyongyosi/eslint-config":"0.4.0","@commitlint/cli":"8.3.5","@commitlint/config-conventional":"8.3.4","@rollup/plugin-typescript":"4.0.0","@types/node":"12.12.32","@types/jest":"25.1.4","@typescript-eslint/parser":"2.25.0","@typescript-eslint/eslint-plugin":"2.25.0","eslint":"6.8.0","husky":"4.2.3","jest":"25.2.3","jest-coverage-badges":"1.1.2","npm-run-all":"4.1.5","release-it":"13.4.0","rimraf":"3.0.2","rollup":"2.2.0","rollup-plugin-add-shebang":"0.3.1","rollup-plugin-terser":"5.3.0","ts-jest":"25.2.1","tslib":"1.11.1","typescript":"3.8.3"},"gitHead":"fad330541893ff9fdbccbc1f3dbe30c6feb297fa","_id":"@attilagyongyosi/path-linter@2.1.2","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-ZlqsrpfVjp4D6ih9J4eS3Sol3hWpwKbRk5IlyFmSUIvt5SnheRdDbCMXGauWZVgSFkhC7RHP3CSsAzIhgqfRmg==","shasum":"e51fc15101329270a08926388021890e4973518f","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.1.2.tgz","fileCount":4,"unpackedSize":16781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefnofCRA9TVsSAnZWagAA6MYP/i6QmJxnj80oHGmnppx+\ngjzV3hvAbab2MdWiKkU5xleUQpE64FJSgzmzoPcT07ci9gg4sS/OnVgccuYV\n8Kmf1+qZb46oiTjDRXaj9ckiF+bj7G3V4sDEC8ZMyse577QGDDfoXMJCFBN2\ndMnI4Jq17IVrPShL6X343Pc9dH6bwH9CKz5eHZkw5yOJB65g8o3K5ZrRGFZ3\nRe4eSqnB0hnYlpV6XlczkygKWSYz+d0ibppvLtFfBf1O7nC2i5otcOiAY9rt\nK9yWtPIz8H+fuxahfSD5Pct4fwZPN4kXRss2wWybtnzfC6WJnG1M3W2bdUoZ\nZFcK0YrcWK0T/4aGO+MFXjkRL8gPIvsVTT+zwi5JBRxexo+cIS/E+1jGC9zS\nyFC4NkAptZN8rL1UCSkPA5JXHSfu2TF4Xp/qnnd2/hrJBXoPlSyOLEAFJ8Pd\nI2k80d4rB/PEMlUvoCYg83whXLv6BCxcd+0J29/tI6WgKQpCO6fZ8x4Dg4+v\nLSM50aak0lb4sAddxJloIXi/hza9aPWGxb6p6qRegb0owUwXncP7/RRv1HWc\ng430GTVvVzqnCGLZMp/YKMkWN6v8mIGs2sqeyePYCfoZXKUKUFoDLzauCQJ5\nyhw33vbQBbcm4f6lbecCmDCe6382BDJ7ZZeeQ9waHVvYHZvZ1ky33Cu3Utu7\npAZC\r\n=/Z5d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBEHyX/epwRbLFVEG0fnVf4Fn1W0Oyj+pAP5XURRjNZzAiBv3iQaL9gpHIDHuCvJPX8K3o9KSpVW0fmEmoFyEfkDdg=="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.1.2_1585347103061_0.7781030558707112"},"_hasShrinkwrap":false},"2.1.3":{"name":"@attilagyongyosi/path-linter","version":"2.1.3","description":"Linter for consistent directory and file naming.","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"clean":"rimraf ./lib","deps:update":"ncu -u","lint:ts":"eslint src/**/*.ts","lint:paths":"path-linter --colorize","lint":"run-p lint:*","copy":"copyfiles README.md LICENSE.md package.json ./lib","build":"yarn clean && esbuild --bundle --platform=node --minify --outdir=lib --target=node10 src/index.ts && add-shebang && yarn copy","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json","test:unit":"jest --runInBand && yarn test:badges:unit","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test:watch":"jest --runInBand --watchAll","test":"yarn test:unit && yarn test:integration && yarn test-run","test:badges:unit":"yarn jest-coverage-badges --input generated/jest-coverage/unit/coverage-summary.json --output badges/coverage-unit","test:sanity":"yarn clean && yarn lint && yarn test"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/path-linter":"2.1.2","@attilagyongyosi/eslint-config":"0.4.0","@commitlint/cli":"11.0.0","@commitlint/config-conventional":"11.0.0","@types/node":"14.14.3","@types/jest":"26.0.15","@typescript-eslint/parser":"4.6.0","@typescript-eslint/eslint-plugin":"4.6.0","add-shebang":"0.1.0","copyfiles":"2.4.0","esbuild":"0.7.21","eslint":"7.12.0","husky":"4.3.0","jest":"26.6.1","jest-coverage-badges":"1.1.2","npm-check-updates":"9.2.2","npm-run-all":"4.1.5","rimraf":"3.0.2","semantic-release":"17.2.1","@semantic-release/git":"9.0.0","@semantic-release/commit-analyzer":"8.0.1","@semantic-release/release-notes-generator":"9.0.1","@semantic-release/changelog":"5.0.1","@semantic-release/npm":"7.0.6","@semantic-release/github":"7.1.1","ts-jest":"26.4.2","tslib":"2.0.3","typescript":"4.0.3"},"_id":"@attilagyongyosi/path-linter@2.1.3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-zmoQDXb1FHe5zgsTaRYy95jUm8u3uaXhNJYYnCygiBelnUJfVB08cauP3RlF28wVi/wL6OeOtaC5NFTGwu8Epw==","shasum":"27d2f3a03ac0f80399fa8acb248112322a00c577","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.1.3.tgz","fileCount":3,"unpackedSize":10470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmyA9CRA9TVsSAnZWagAAh2gP/0ZMJAXEGsGNWtFLxWHg\nXqgGgzgu/dlukuxJp20ffhcv2P/mHQ5jwzgNvoa4rCOu3Gj8vw+rIhxv3IjV\nCHy8hC+NzL0Fq7H4Yagn4zFm8jHt4G96tmgnTw3n3SWBBHKEE8qV4JuW67Yd\nLSK09sEro99taxPXsq6hkZG5h0lIvTRLAFYVP5Kg2UjUDTtdk+W6rF5d/Ngc\npRjhTS+TPodYK4AejEx8yJdJMRKt5fwIXwcAxkRLR+7EbHD/HO/+liF0HYdC\n2pv2tJ8S4yrDrNgibP5mC9oS8o3+JjhvuCSENtEJKyUt0rqXInnyRhoXhNIB\niPq8qa6Ia/jsUKMsCqSIhuBwWB2goi9C5yo00MCcqfjb+//ip4EZ+HtfIclh\ndoZgDMbqPcT7+3btUW4sdPqHBjAVY4tV1SSrGseTIVH+8bVbcPTpDZOQP++O\nmKj5HdYeqIZ5PllmvbzM4+2qV8cCgwgDmd3qxothQF7+1lOztYL7TpTaZQ4K\nUUEQ1kFQrNgMCRkdC3ZPq1vEjySFIKP+tXejS2h1uWLxmG2Or8XGrlklUEY7\nwe9fKHPkC+3Bv4tpeCwjiPgwa+mUBe1daGTGf50ZhNcKok66JeJJ3NF10epL\n66FiUkSE1/DJiZFNUmkmnKYEtQtgLG2/oU32lLvr0C3fMXYnFj1Odr4UkjUl\nLr6E\r\n=NBom\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHeRt9xqI9lc1ReWTtjMYfo4J5JtzZFv0FtEUXHxxSCsAiB6Ip4HU2diz00ouMbkJ7Pd4dtvfZrGnekmwtYa6pLMPw=="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.1.3_1604001852885_0.1832338742093924"},"_hasShrinkwrap":false,"deprecated":"Erroneous bundling causes this version to not work. Please update to a newer one."},"2.1.4":{"name":"@attilagyongyosi/path-linter","version":"2.1.4","description":"Linter for consistent directory and file naming.","main":"index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"clean":"rimraf ./lib","deps:update":"ncu -u","lint:ts":"eslint src/**/*.ts","lint:paths":"path-linter --colorize","lint":"run-p lint:*","copy":"copyfiles README.md LICENSE.md package.json ./lib","build":"yarn clean && esbuild --bundle --platform=node --minify --outdir=lib --target=node10 src/index.ts && add-shebang && yarn copy","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json","test:unit":"jest --runInBand && yarn test:badges:unit","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test:watch":"jest --runInBand --watchAll","test":"yarn test:unit && yarn test:integration && yarn test-run","test:badges:unit":"yarn jest-coverage-badges --input generated/jest-coverage/unit/coverage-summary.json --output badges/coverage-unit","test:sanity":"yarn clean && yarn lint && yarn test"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/path-linter":"2.1.2","@attilagyongyosi/eslint-config":"0.4.0","@commitlint/cli":"11.0.0","@commitlint/config-conventional":"11.0.0","@types/node":"14.14.3","@types/jest":"26.0.15","@typescript-eslint/parser":"4.6.0","@typescript-eslint/eslint-plugin":"4.6.0","add-shebang":"0.1.0","copyfiles":"2.4.0","esbuild":"0.7.21","eslint":"7.12.0","husky":"4.3.0","jest":"26.6.1","jest-coverage-badges":"1.1.2","npm-check-updates":"9.2.2","npm-run-all":"4.1.5","rimraf":"3.0.2","semantic-release":"17.2.1","@semantic-release/git":"9.0.0","@semantic-release/commit-analyzer":"8.0.1","@semantic-release/release-notes-generator":"9.0.1","@semantic-release/changelog":"5.0.1","@semantic-release/npm":"7.0.6","@semantic-release/github":"7.1.1","ts-jest":"26.4.2","tslib":"2.0.3","typescript":"4.0.3"},"_id":"@attilagyongyosi/path-linter@2.1.4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UPtsrKYLJSjtNVqWmVf19isvJH0cxVJmnm+cARGkVnnRcGAbDuqAc2g0i8Qn/O3SlMXiz/uB0Wk36mpJlwnEvg==","shasum":"322de57e28f0ccbf773f9c8985b8996636501996","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.1.4.tgz","fileCount":4,"unpackedSize":16658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmy74CRA9TVsSAnZWagAAWacP/juob9suTV4oRX2cc/be\nVewlkZtc0hP2AgjGzJ3miGshcQTgFrRVTsxvzI1uG9Q0Yr0gFmPjb94qurFa\nsAsSUbQFPuPGlonnxqffCmWAvnAoMz5T9I3+7FbBJXRt4ytMXKxGdLrJpaDL\nX1T75Ht92ZZoIPmDYCG5NPDsiE4/KJUyQhsdm5CT47QgItyoXJqAdA58+oy/\npyIFLleEhlQiEOUbuP2MtmygLAbc742I89ex5ICEjPtVrasoZ46PxQLMiqBS\nY9QHZ8Er7GM8MOQoGr8mphlhYw7hquW6Q4nEqTCC8pbtV9noynV1V038Gw8/\nQijhJvrUn3dgwkcH8oo8KiDq05ux81gEfrYQSvc5aBBnWx6+eyfSoZMYryXe\nU0UvHtHd9NHotVbtaxlEkc0cp4Ooy7rmbANgLJnMs551kMxDEv1WXt9gQGGW\n0GhPZmQbxE5ERmofW8B/NP1heOTBEu7QodD0xcvo2xmFmbeNAE5cD1LB76GY\nq/z0ceu31mzXK86jnXEe0fyu+8p/zocZvc3zWddraf9xQaDWd1pWSLSW6BqY\nyzYGqtw6uso5LQe0GtSyVPIvTB7R18DstQThG/kVBeTGpd/8GLqYU+41mmU8\nDzeZAN1dJRNMqD/Uqs51EOE4h2v9WbBIipJ6RUdWILoe1/59tKoweKH/3pvt\nUzhT\r\n=+3Nx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIED7V/a5ChlHUarIJ+pafF8RGsxoI5uejnuYCFpEh0HkAiEArFv09g/nPeQRiaGySoKMBQiD/AnF12LJXl4dWTp520k="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.1.4_1604005623844_0.21497529652241343"},"_hasShrinkwrap":false,"deprecated":"Erroneous bundling causes this version to not work. Please update to a newer one."},"2.1.5":{"name":"@attilagyongyosi/path-linter","version":"2.1.5","description":"Linter for consistent directory and file naming.","main":"lib/index.js","author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"scripts":{"clean":"rimraf ./lib","deps:update":"ncu -u","lint:ts":"eslint src/**/*.ts","lint:paths":"path-linter --colorize","lint":"run-p lint:*","build":"yarn clean && esbuild --bundle --platform=node --minify --outdir=lib --target=node10 src/index.ts && add-shebang","test-run:default":"yarn build && node lib/index.js","test-run":"yarn build && node lib/index.js --config sample-config.json","test:unit":"jest --runInBand && yarn test:badges:unit","test:integration":"yarn build && jest --runInBand -c jest.integration.config.js","test:watch":"jest --runInBand --watchAll","test":"yarn test:unit && yarn test:integration && yarn test-run","test:badges:unit":"yarn jest-coverage-badges --input generated/jest-coverage/unit/coverage-summary.json --output badges/coverage-unit","test:sanity":"yarn clean && yarn lint && yarn test"},"publishConfig":{"access":"public"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"bin":{"path-linter":"lib/index.js"},"keywords":["lint","linter","filenames","path","code style","convention"],"homepage":"https://github.com/attilagyongyosi/path-linter","private":false,"devDependencies":{"@attilagyongyosi/path-linter":"2.1.2","@attilagyongyosi/eslint-config":"0.4.0","@commitlint/cli":"11.0.0","@commitlint/config-conventional":"11.0.0","@types/node":"14.14.3","@types/jest":"26.0.15","@typescript-eslint/parser":"4.6.0","@typescript-eslint/eslint-plugin":"4.6.0","add-shebang":"0.1.0","esbuild":"0.7.21","eslint":"7.12.0","husky":"4.3.0","jest":"26.6.1","jest-coverage-badges":"1.1.2","npm-check-updates":"9.2.2","npm-run-all":"4.1.5","rimraf":"3.0.2","semantic-release":"17.2.1","@semantic-release/git":"9.0.0","@semantic-release/commit-analyzer":"8.0.1","@semantic-release/release-notes-generator":"9.0.1","@semantic-release/changelog":"5.0.1","@semantic-release/npm":"7.0.6","@semantic-release/github":"7.1.1","ts-jest":"26.4.2","tslib":"2.0.3","typescript":"4.0.3"},"gitHead":"de79eeb7ce46f228b6d021a3d0450aecd6b042e4","_id":"@attilagyongyosi/path-linter@2.1.5","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UbJ1wajoGmpGC5qlsY47LxWeNq3+BhRvALWRD19oW9LD89Dru9eLLCGPKFpOwvHeVYmPDM4JWg+Y5mZn6+kv8A==","shasum":"3755f178230ab23dd5a937ab51f35dbdfb3b018f","tarball":"https://registry.npmjs.org/@attilagyongyosi/path-linter/-/path-linter-2.1.5.tgz","fileCount":4,"unpackedSize":16532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmzHcCRA9TVsSAnZWagAA2PcP/R1pSemYTSyb9vNXqq9c\nezD8QTZ7cx5j/Njpkivcw/APsiTGYt+udhEOiHBYGCP9EDnqY8BvNek1QPn9\ninUNRmhZmeg7SYcaxaFAd/qRX/UpJhMajxfV7R3HJFj9tjHmYd9LQk+vvVY3\nkwDRxzmNSfCGoXil9vUip3XL/09PYvAIK995HcQv6VBzv9/Oj/LqaZCAWYm0\nHaDhMx++LzWl1tZYiBZbeeFxoTFS7jER5L/ElAFHRL//11CW7DMnWScgFwqV\npNEBcthaUd+Mr1WfofGE4GYPMC3pPaG1/Vze7L7ET3J/6l766gFkHB2e6kpR\nKtA/9tjm+TKsZYttdLuqKAPVfA+O+yuNSwb5bs8XlFo8G9QxJQ50YT1u9j2z\nwewGqS/I4crgPpKDGY4a8K+qzEWbZ3Va9DlcrxRjz/pCDRFrjTTmAt9t+oe1\n3KI9czSQ0UyedePjvDaDrvABeg7QALhy5AsANmUa7Q3OI85iM+XZshQgKrl8\nLHUneprqx/2BzApx1XtQ8HKP8xOp+/jzGlxmBkw1x0jp1mERKsp+ttZvF5xO\nsm1J+VQY4ivaEJH24YG5PvF64Zv7jAunvOVK4jItZ2YIC8wANbvHWw0W5rVJ\nliYZSL9SZFO0S6RITKfa9G/D0ySAOtr2K6Mkku6NFp2epwk8/5P1OFa/6i8K\n3Z2S\r\n=WL1F\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXTEHvjE2my4xffjJ3EKA0YPsaXE6+UHbB3g57jrGq4AiEA9QMBQSbD/4zWE5BKe1Wcd5DG3mfhxMR9WutGbehOOV8="}]},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"_npmUser":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/path-linter_2.1.5_1604006363756_0.13517700592509163"},"_hasShrinkwrap":false}},"time":{"created":"2019-08-27T23:06:35.315Z","1.2.0":"2019-08-27T23:06:35.650Z","modified":"2022-04-04T16:20:40.396Z","2.0.0-rc.0":"2019-10-02T21:42:25.812Z","2.0.0-rc.1":"2019-10-05T14:35:21.483Z","2.0.0-rc.2":"2019-10-18T22:23:59.629Z","2.0.0":"2019-10-19T13:48:31.627Z","2.1.0":"2020-01-24T22:45:35.694Z","2.1.1":"2020-01-28T11:17:34.744Z","2.1.2":"2020-03-27T22:11:43.257Z","2.1.3":"2020-10-29T20:04:13.047Z","2.1.4":"2020-10-29T21:07:03.994Z","2.1.5":"2020-10-29T21:19:23.913Z"},"maintainers":[{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"}],"description":"Linter for consistent directory and file naming.","homepage":"https://github.com/attilagyongyosi/path-linter","keywords":["lint","linter","filenames","path","code style","convention"],"repository":{"type":"git","url":"git+https://github.com/attilagyongyosi/path-linter.git"},"author":{"name":"attilagyongyosi","email":"attilagyongyosi0@gmail.com"},"bugs":{"url":"https://github.com/attilagyongyosi/path-linter/issues"},"license":"MIT","readme":"[![npm version](https://badge.fury.io/js/%40attilagyongyosi%2Fpath-linter.svg)](https://badge.fury.io/js/%40attilagyongyosi%2Fpath-linter)\r\n\r\n![CI](https://github.com/attilagyongyosi/path-linter/workflows/CI/badge.svg)\r\n\r\n[![unit test coverage lines](badges/coverage-unit/badge-lines.svg)]()\r\n[![unit test coverage functions](badges/coverage-unit/badge-functions.svg)]()\r\n[![unit test coverage statements](badges/coverage-unit/badge-statements.svg)]()\r\n[![unit test coverage branches](badges/coverage-unit/badge-branches.svg)]()\r\n\r\n# @attilagyongyosi/path-linter\r\n> Lightweight, zero-dependency library to lint file paths in a project.\r\n\r\n1. [❔ But Why?](#but-why)\r\n2. [❤ Neat Things](#neat-things)\r\n3. [⚙ Installing](#installing)\r\n4. [🛠 Configuration](#configuration)\r\n    1. [Configuration File](#configuration-file)\r\n    2. [Built-in Naming Convention Support](#built-in-conventions)\r\n    3. [Linting Severity](#severity)\r\n    4. [Ignoring Parts of Paths](#ignoring-parts)\r\n    5. [Example Config](#example-config)\r\n5. [🔄 Usage](#usage)\r\n6. [👦 Contributing](#contributing)\r\n7. [👨 Authors](#authors)\r\n8. [📄 License](#license)\r\n9. [📈 Future Improvements](#future-improvements)\r\n9. [📣 Shout-outs](#shoutouts)\r\n\r\n## 1. ❔ But Why? <a name=\"but-why\"></a>\r\n> Consistency is always the best teacher\r\n\r\nWell, my therapist says that I'm a bit too keen on static analysis.\r\nI can't really help it though, so recently, I started to look for a way to\r\nenforce a file naming convention for a big software project.\r\n\r\nThe NPM registry is not overly saturated with solutions to this problem, and\r\nthe ones I found left me hungry for more. Some way or the other, there was always\r\nsomething bothering me.\r\n\r\nFor a while, I also wanted to do some open source project on my own, just for the sake\r\nof trying myself in this game.  \r\nSo here it is!\r\n\r\nIt is currently **~7kb in size**, comes with **no dependencies**. The size could be smaller, I sacrificed it a bit on the altar \r\nof structural well-being.\r\n\r\nEnjoy!\r\n\r\n## 2. ❤ Neat Things <a name=\"neat-things\"></a>\r\n* ~7kb package size\r\n* no dependencies\r\n* supports file extension linting\r\n* supports different naming convention per folder\r\n* did I say it's flexible? It uses regular expressions, after all\r\n* 100% test coverage\r\n\r\n## 3. ⚙ Installing <a name=\"installing\"></a>\r\n`path-linter` should be added as a `devDependency`:\r\n```bash\r\nnpm install --save-dev @attilagyongyosi/path-linter\r\n```\r\nor\r\n```bash\r\nyarn add --dev @attilagyongyosi/path-linter\r\n```\r\n\r\n## 4. 🛠 Configuration <a name=\"configuration\"></a>\r\n`path-linter` needs a JSON configuration file somewhere in your project where you specify\r\nyour linting rules.\r\n\r\nYou can specify different linting rules for different directories in your project.\r\nRules can either be a regular expression or one of the built-in naming conventions that\r\n`path-linter` supports out of the box.\r\n\r\n### 4.1 Configuration File <a name=\"configuration-file\"></a>\r\nPlace a file named `path-linter.json`, `.path-linter.json` or `.pathlinterrc` in your project root\r\nand `path-linter` will detect them automatically.\r\n\r\nIf your configuration is placed elsewhere or named otherwise, you can specify\r\nit with the `--config <config-file-path>` CLI switch. See [5. Usage](#usage).\r\n\r\n### 4.2 Built-in Naming Convention Support <a name=\"built-in-conventions\"></a>\r\n`path-linter` supports the following naming conventions, so you don't need to configure a\r\nregular expression for them:\r\n- `kebab-case`\r\n\r\n### 4.3 Linting Severity <a name=\"severity\"></a>\r\nYou can configure linting severity in the top-level `severity` configuration property.  \r\n\r\nIt is `error` by default which will fail the linting process when file path do not adhere\r\nto configured conventions, or can be `warning` to just log warnings on failing files.\r\n\r\n### 4.4 Ignoring Parts of the Paths <a name=\"ignoring-parts\"></a>\r\nThere are situations where you want to skip certain parts of a file path and not have them linted.\r\n\r\nOne common example would be when you want your paths to adhere to `kebab-case` naming but you\r\nalso use Jest for testing. Jest mocks need to be in a directory called `__mocks__` which break\r\nthe linting rule.\r\n\r\nTo accommodate this situation, you can specify an `ignore` property for a linting rule config.\r\nThis property should be an array of strings and `path-linter` will ignore these substrings in file paths.\r\n\r\n### 4.5 Example Config <a name=\"example-config\"></a>\r\n```json\r\n{\r\n    \"colorize\": true,\r\n    \"severity\": \"warning\",\r\n    \"rules\": [{\r\n        \"directory\": \"src\",\r\n        \"rule\": \"kebab-case\",\r\n        \"ignore\": [ \"__tests__\", \"__mocks__\" ]\r\n    }, {\r\n        \"directory\": \"tests\",\r\n        \"rule\": \".*\\\\.spec\\\\.ts\"\r\n    }]\r\n}\r\n```\r\n\r\nYou can also find an example in [sample-config.json](sample-config.json).\r\n\r\n## 5. 🔄 Usage <a name=\"usage\"></a>\r\nWire it into your NPM scripts in `package.json`.  \r\nFor example:\r\n```json\r\n{\r\n    \"scripts\": {\r\n        \"lint:paths\": \"path-linter --config some-config.json --colorize\"\r\n    }\r\n}\r\n```\r\n\r\nThen you can execute it with  \r\n```bash\r\nnpm run lint:paths\r\n```\r\nor\r\n```bash\r\nyarn lint:paths\r\n```\r\n\r\n`--config <path>`  \r\nSpecifies the relative path to a configuration file. If not specified, the library will try to look up a \r\n`path-linter.json` file in the project root.\r\n\r\n`--colorize`  \r\nEnables colorization for the console output.  \r\nThis can also be set in the configuration file's `colorize` property.\r\n\r\n## 6. ‍👦 Contributing <a name=\"contributing\"></a>\r\nFeel free to open issues or pull requests if you have some improvement on the library. I'm open to everything!\r\n\r\n## 7. 👨 Authors <a name=\"authors\"></a>\r\n* **Attila Gyöngyösi** - [GitHub](https://github.com/attilagyongyosi)\r\n\r\n## 8. 📄 License <a name=\"license\"></a>\r\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\r\n\r\n## 9. 📈 Future Improvements <a name=\"future-improvements\"></a>\r\n* Support for programmatic usage\r\n* Support for opt-in path auto-fixing\r\n* Support for `camelCase`, `dot.notation` and `snake_case`\r\n\r\n## 10. 📣 Shout-outs <a name=\"shoutouts\"></a>\r\n* Thanks [pamepeixinho](https://github.com/pamepeixinho) for the [Jest coverage badges](https://github.com/pamepeixinho/jest-coverage-badges)!\r\n","readmeFilename":"README.md"}