PATH:
usr
/
share
/
doc
/
nodejs-docs-16.20.2
/
doc
/
contributing
# Maintaining cjs-module-lexer The [cjs-module-lexer](https://github.com/nodejs/node/tree/HEAD/deps/cjs-module-lexer) dependency is used within the Node.js ESM implementation to detect the named exports of a CommonJS module. It is used within [`node:internal/modules/esm/translators`](https://github.com/nodejs/node/blob/HEAD/lib/internal/modules/esm/translators.js) in which both `internal/deps/cjs-module-lexer/lexer` and `internal/deps/cjs-module-lexer/dist/lexer` are required and used. `internal/deps/cjs-module-lexer/lexer` is a regular JavaScript implementation that is used when WebAssembly is not available on a platform. `internal/deps/cjs-module-lexer/dist/lexer` is a faster implementation using WebAssembly which is generated from a C based implementation. These two paths resolve to the files in `deps/cjs-module-lexer` due to their inclusion in the `deps_files` entry in [node.gyp](https://github.com/nodejs/node/blob/main/node.gyp). The two different versions of lexer.js are maintained in the [nodejs/cjs-module-lexer][] project. In order to update the Node.js dependencies to use to a newer verion of cjs-module-lexer, complete the following steps: * Clone [nodejs/cjs-module-lexer][] and check out the version that you want Node.js to use. * Follow the WASM build steps outlined in [wasm-build-steps](https://github.com/nodejs/cjs-module-lexer#wasm-build-steps). This will generate the WASM based dist/lexer.js file. * Preserving the same directory structure, copy the following files over to `deps/cjs-module-lexer` directory where you have checked out Node.js. ```text ├── CHANGELOG.md ├── dist │ ├── lexer.js │ └── lexer.mjs ├── lexer.js ├── LICENSE ├── package.json └── README.md ``` * Update the link to the cjs-module-lexer in the list at the end of [doc/api/esm.md](../api/esm.md) to point to the updated version. * Create a PR, adding the files in the deps/cjs-module-lexer that were modified. If updates are needed to cjs-module-lexer for Node.js, first PR those updates into [nodejs/cjs-module-lexer][], request a release and then pull in the updated version once available. [nodejs/cjs-module-lexer]: https://github.com/nodejs/cjs-module-lexer
[-] node-postmortem-support.md
[edit]
[-] using-symbols.md
[edit]
[-] offboarding.md
[edit]
[-] maintaining-dependencies.md
[edit]
[-] maintaining-zlib.md
[edit]
[-] maintaining-shared-library-support.md
[edit]
[-] components-in-core.md
[edit]
[-] internal-api.md
[edit]
[-] maintaining-cjs-module-lexer.md
[edit]
[-] commit-queue.md
[edit]
[+]
..
[+]
doc_img
[-] maintaining-http.md
[edit]
[-] adding-new-napi-api.md
[edit]
[-] strategic-initiatives.md
[edit]
[-] writing-tests.md
[edit]
[-] maintaining-root-certs.md
[edit]
[-] using-internal-errors.md
[edit]
[-] maintaining-openssl.md
[edit]
[-] collaborator-guide.md
[edit]
[-] investigating-native-memory-leaks.md
[edit]
[-] maintaining-web-assembly.md
[edit]
[-] maintaining-c-ares.md
[edit]
[-] maintaining-icu.md
[edit]
[-] maintaining-types-for-nodejs.md
[edit]
[-] issues.md
[edit]
[-] writing-and-running-benchmarks.md
[edit]
[-] maintaining-the-build-files.md
[edit]
[-] technical-values.md
[edit]
[-] cpp-style-guide.md
[edit]
[-] security-steward-on-off-boarding.md
[edit]
[-] technical-priorities.md
[edit]
[-] backporting-to-release-lines.md
[edit]
[-] releases.md
[edit]
[-] maintaining-V8.md
[edit]
[-] diagnostic-tooling-support-tiers.md
[edit]
[-] security-model-strategy.md
[edit]
[-] security-release-process.md
[edit]
[-] building-node-with-ninja.md
[edit]
[-] feature-request-management.md
[edit]
[-] pull-requests.md
[edit]
[-] maintaining-npm.md
[edit]
[-] static-analysis.md
[edit]
[-] primordials.md
[edit]
[-] code-of-conduct.md
[edit]