ignore-sync
a cli tool to build and sync *ignore files across files and repositories
Why
-
Github default
.gitignore
doesn't cover all our needs, we always need to compose and manage multiple.gitignore
files from github, such as Node.gitignore + macOS.gitignore, in order to remove all the noises in our development. It should be automated. -
For library developer, we often need to compose a
.npmignore
from.gitignore
and some extra ignore patterns that we do not wish to ignore by.gitignore
, such as test files and.*rc
files. If.gitignore
is updated, you will need to update corresponding part of.npmignore
manually. We should avoid this repetitive work.
a short example on how ignore-sync
handle ignore files
[github/gitignore]
Node.gitignore
Global/macOS.gitignore
[inline]
*.test.js
yarn.lock
Installation and setup
-
npm install --save-dev ignore-sync
-
update
package.json
{ "scripts": { + "ignore-sync": "ignore-sync ." } }
-
now follow how to use to create
*ignore-sync
files, thennpm run ignore-sync
, all corresponding ignore files will be generated.
Development Setup
We are using corepack to manage the yarn
version
corepack enable
How to use
-
ignore-sync
works on any ignore file that name end withignore
, such as.gitignore
,.npmignore
,.eslintignore
, etc. Simply creating a file that end withignore-sync
.example:
.gitignore-sync
->.gitignore
-
create a source tag in your
*ignore-sync
file to identify the source of ignore patterns[put_source_tag_here]
different source tag identifies different source of ignore patterns
-
[inline]
- the ignore patterns will be copied directly to generated ignore file
-
[local]
- the content of these local files will be copied directly to generated ignore file
- support glob pattern, e.g.
packages/**/.gitignore
- support referencing other ignore-sync files, e.g. referencing
.gitignore-sync
in.npmignore-sync
-
[relative]
-
the content of these local files will be copied with relative path prefix to generated ignore file
-
support glob pattern, e.g.
packages/**/.gitignore
-
support referencing other ignore-sync files, e.g. referencing
.gitignore-sync
in.npmignore-sync
-
example
# input: /packages/a/.prettierignore ignored.md
# input: /.prettierignore-sync [relative] packages/a/.prettierignore
# output: /.prettierignore packages/a/ignored.md
-
-
[$username/$repo#$ref]
- the content of these github files will be downloaded and appended to generated ignore file
- recommend using ignore patterns from [github/gitignore]
-
$ref
is optional, default to the default branch
-
-
npm run ignore-sync