For setup, contribution rules, and the SVG styleguide, see CONTRIBUTING.md and helpers/README.md. This file only covers gotchas an agent runs into that aren't written down elsewhere.
-
Node version: pinned in
.nvmrc(currently v22.14.0). Agent shells don't auto-source it andnvm usedoesn't persist across separate tool calls — chain it into every command:source ~/.nvm/nvm.sh && nvm use && <command>. -
libxmljscan silently gut test coverage:test/utils/utils.jsrequires it unconditionally, so if its native binary doesn't match the active Node's ABI/arch,mocha --parallelworkers forlayer.js,color.js,skintone.js, andfile-format.jscrash on import — with no failing-test report, just a lower "passing" count. If that count looks off, or you see adlopen/"incompatible architecture" error, runnpm rebuild libxmljsunder the correct Node version before trustingnpm test. -
Unicode versions might be ahead of the
emojibase-datadependency: see the loader block and comments arounddata/unicode-draft-overrides.jsoninhelpers/generate-data-tables.js. -
Committing multi-step data changes:
data/openmoji.json/.csvare derived from all source CSVs merged together. When splitting related work into meaningful commits, regenerate them at each commit boundary, not just the last one, so every commit is independently buildable/testable.