Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jamiebuilds/purposefile
Make sure every file in your repo is exactly where it should be
https://github.com/jamiebuilds/purposefile
Last synced: 17 days ago
JSON representation
Make sure every file in your repo is exactly where it should be
- Host: GitHub
- URL: https://github.com/jamiebuilds/purposefile
- Owner: jamiebuilds
- License: other
- Created: 2019-04-30T01:25:18.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-07-16T23:51:31.000Z (over 4 years ago)
- Last Synced: 2024-04-25T23:45:07.188Z (7 months ago)
- Language: TypeScript
- Homepage:
- Size: 1.51 MB
- Stars: 169
- Watchers: 4
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-github-repos - jamiebuilds/purposefile - Make sure every file in your repo is exactly where it should be (TypeScript)
README
# purposefile
> Make sure every file in your repo is exactly where it should be.
![Example of running purposefile CLI](./.github/list.png)
## Install
First, [make sure node and npm are installed](https://nodejs.org/).
Then if you have an existing `package.json` you can run:
```sh
npm install --save-dev purposefile
npx purposefile
```Or if you want to use it globally you can also just run:
```sh
npx purposefile
```It's recommended that you save this to your [`package.json#scripts`](https://docs.npmjs.com/misc/scripts)
```json
{
"name": "my-package",
"scripts": {
"check-files": "purposefile"
}
}
``````sh
npm run check-files
```## Usage
First create a `.purposefile` in the root of your project like this:
```properties
.purposefile Configures purposefile
.gitignore Configures git to ignore certain files
.prettierrc Configures Prettier
.prettierignore Configures Prettier ignored files
package.json Configures npm and related tools
package-lock.json Lock file for npm dependencies
tsconfig.json Configures TypeScript
README.md Documentation for repo
LICENSE License for package
.git/** Internal git state & config
node_modules/**/* Dependencies installed by npm
typings/*/*.d.ts TypeScript library type definitions
src/**/*.ts Source files
!src/**/*.test.ts Dont place test files within src/
test/**/*.test.ts Test files
dist/**/*.{js,d.ts}{,.map} Built source files
.github/*.png Images for README
```> **Note:** Entries are matched in reverse order. Entries with no defined
> purpose or that start with a `!` act like negations to the globs above them.Then run:
```sh
npx purposefile
```If all the files in the repo are known, you'll get:
![Example output of purposefile when all files are known](./.github/no-bad-files.png)
Or if there's any unknown files:
![Example output of purposefile when there are unknown files](./.github/bad-files.png)
If you want to check the purpose of a file you can run:
```sh
purposefile path/to/file
```![Example output of purposefile for a single file lookup](./.github/lookup.png)
If you want to check the purpose of many files at once you can also specify globs:
```sh
purposefile '**' --ignore '**/node_modules/**'
```![Example output of purposefile for a glob](./.github/list.png)
> **Note:** You can specify multiple `--ignore` patterns to exclude files from being listed.
If you want to check `purposefile` before every commit, you can do so with [Husky](https://github.com/typicode/husky):
```jsonc
{
"husky": {
"hooks": {
"pre-commit": "purposefile" // Or "purposefile && lint-staged" if you use `lint-staged`
}
}
}
```