Ignoring files
Not every file in your func folder belongs to the func. Editor settings, virtual environments, caches, and scratch notes are local clutter — they shouldn't sync to the sandbox, fill up the IDE file tree, or end up in a published version. An .artifuncsignore file, placed at the root of your func, controls exactly which files are part of the func and which are skipped.
It uses the same syntax as .gitignore, so if you've written one of those, you already know how this works.
What it affects
A path matched by your ignore rules is excluded everywhere a func's files are handled:
- It never syncs to the sandbox — whether through live editing or the
artifuncsCLI (dev/push). - It never appears in the Web IDE file explorer.
- It's never committed to your draft, so it's never reviewed or published.
Because ignored files don't count toward your published version, they also help you stay under the review limits (≤ 100 files, ≤ 1 MB each).
Built-in defaults
These patterns are always ignored, even if you don't have an .artifuncsignore file at all. They cover the usual build and tooling artefacts:
| Pattern | What it is |
|---|---|
.git/ | Git metadata |
.venv/, venv/ | Python virtual environments |
node_modules/ | npm / pnpm packages |
__pycache__/, *.pyc | Python bytecode caches |
.DS_Store | macOS folder metadata |
.idea/, .vscode/ | JetBrains / VS Code settings |
files/ | the per-session runtime I/O directory (see Files) |
.artifuncs/ | local CLI state |
Dependencies are reinstalled from your manifest on the sandbox, so there's no reason to sync
node_modules/or a virtualenv — that's why they're ignored by default. Declare deps inrequirements.txt/package.jsoninstead (see Dependencies).
Adding your own rules
Create a file named .artifuncsignore at the root of your func and list one pattern per line:
# scratch files I don't want in the func
scratch/
*.log
TODO.txt
Standard gitignore syntax applies, matched relative to the func root:
dir/— ignore a whole directory.*.log— glob by extension./secret.txt— a leading slash anchors the pattern to the func root.#— a comment line.
Re-including a file
Prefix a pattern with ! to negate it — keep a file that an earlier rule would otherwise hide. A later rule wins over an earlier one, just like in .gitignore:
# ignore all CSVs except the seed data the func needs at runtime
*.csv
!seed.csv
You can negate a built-in default the same way (for example !.vscode/ to let editor config travel with the func), though you'll rarely need to.