UNPKG

resolve

Version:

resolve like require.resolve() on behalf of files asynchronously and synchronously

27 lines (22 loc) 1.22 kB
# resolve package - session notes ## Versioning - Manual versioning only - do NOT use `npm version` - Edit package.json version directly, commit with message `v{version}`, then create annotated tag - Changelog lives in git tag annotations, not a separate file - Tag format: `git tag -a v{version} -m "{changelog}"` ## Code style - `__proto__: null` on ALL object literals (prototype pollution protection) - `.slice()` not `.substring()` - One exported function per file - Move nested/inner functions to module level when feasible - Prefer non-hoisted declarations (function declarations at module level, not expressions) - No mutation - copy objects instead of modifying inputs ## Testing - `test/list-exports` is a git submodule with sparse checkout - Tests should cover ALL entrypoints from fixtures, not just `'.'` subpaths - Use `extensions: ['.js', '.json']` when testing exports resolution ## exports field implementation - Uses `node-exports-info` for category semantics - Categories: pre-exports, broken, conditions, patterns, pattern-trailers, current - `exportsCategory` option or `engines: true` to auto-detect from consumer's engines.node - Self-reference resolution respects node_modules boundaries