a CLI tool to build and sync .*ignore files across files and repositories
MIT License
a cli tool to build and sync *ignore files across files and repositories
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
npm install --save-dev ignore-sync
update package.json
{
"scripts": {
+ "ignore-sync": "ignore-sync ."
}
}
now follow how to use to create *ignore-sync
files, then npm run ignore-sync
, all corresponding ignore files will be generated.
We are using corepack to manage the yarn
version
corepack enable
ignore-sync
works on any ignore file that name end with ignore
, such as .gitignore
, .npmignore
, .eslintignore
, etc. Simply creating a file that end with ignore-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]
[local]
packages/**/.gitignore
.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]
$ref
is optional, default to the default branchnpm run ignore-sync