| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -270,7 +270,7 @@ changes: | |||
| 270 | 270 | Register a module that exports [hooks][] that customize Node.js module | |
| 271 | 271 | resolution and loading behavior. See [Customization hooks][]. | |
| 272 | 272 | ||
| 273 | - ## `module.stripTypeScriptTypes(code[, options])` | ||
| 273 | + ### `module.stripTypeScriptTypes(code[, options])` | ||
| 274 | 274 | ||
| 275 | 275 | <!-- YAML | |
| 276 | 276 | added: REPLACEME | |
@@ -408,6 +408,175 @@ import('node:fs').then((esmFS) => { | |||
| 408 | 408 | }); | |
| 409 | 409 | ``` | |
| 410 | 410 | ||
| 411 | + ## Module compile cache | ||
| 412 | + | ||
| 413 | + <!-- YAML | ||
| 414 | + added: v22.1.0 | ||
| 415 | + changes: | ||
| 416 | + - version: v22.8.0 | ||
| 417 | + pr-url: https://github.com/nodejs/node/pull/54501 | ||
| 418 | + description: add initial JavaScript APIs for runtime access. | ||
| 419 | + --> | ||
| 420 | + | ||
| 421 | + The module compile cache can be enabled either using the [`module.enableCompileCache()`][] | ||
| 422 | + method or the [`NODE_COMPILE_CACHE=dir`][] environment variable. After it is enabled, | ||
| 423 | + whenever Node.js compiles a CommonJS or a ECMAScript Module, it will use on-disk | ||
| 424 | + [V8 code cache][] persisted in the specified directory to speed up the compilation. | ||
| 425 | + This may slow down the first load of a module graph, but subsequent loads of the same module | ||
| 426 | + graph may get a significant speedup if the contents of the modules do not change. | ||
| 427 | + | ||
| 428 | + To clean up the generated compile cache on disk, simply remove the cache directory. The cache | ||
| 429 | + directory will be recreated the next time the same directory is used for for compile cache | ||
| 430 | + storage. To avoid filling up the disk with stale cache, it is recommended to use a directory | ||
| 431 | + under the [`os.tmpdir()`][]. If the compile cache is enabled by a call to | ||
| 432 | + [`module.enableCompileCache()`][] without specifying the directory, Node.js will use | ||
| 433 | + the [`NODE_COMPILE_CACHE=dir`][] environment variable if it's set, or defaults | ||
| 434 | + to `path.join(os.tmpdir(), 'node-compile-cache')` otherwise. To locate the compile cache | ||
| 435 | + directory used by a running Node.js instance, use [`module.getCompileCacheDir()`][]. | ||
| 436 | + | ||
| 437 | + Currently when using the compile cache with [V8 JavaScript code coverage][], the | ||
| 438 | + coverage being collected by V8 may be less precise in functions that are | ||
| 439 | + deserialized from the code cache. It's recommended to turn this off when | ||
| 440 | + running tests to generate precise coverage. | ||
| 441 | + | ||
| 442 | + The enabled module compile cache can be disabled by the [`NODE_DISABLE_COMPILE_CACHE=1`][] | ||
| 443 | + environment variable. This can be useful when the compile cache leads to unexpected or | ||
| 444 | + undesired behaviors (e.g. less precise test coverage). | ||
| 445 | + | ||
| 446 | + Compilation cache generated by one version of Node.js can not be reused by a different | ||
| 447 | + version of Node.js. Cache generated by different versions of Node.js will be stored | ||
| 448 | + separately if the same base directory is used to persist the cache, so they can co-exist. | ||
| 449 | + | ||
| 450 | + At the moment, when the compile cache is enabled and a module is loaded afresh, the | ||
| 451 | + code cache is generated from the compiled code immediately, but will only be written | ||
| 452 | + to disk when the Node.js instance is about to exit. This is subject to change. The | ||
| 453 | + [`module.flushCompileCache()`][] method can be used to ensure the accumulated code cache | ||
| 454 | + is flushed to disk in case the application wants to spawn other Node.js instances | ||
| 455 | + and let them share the cache long before the parent exits. | ||
| 456 | + | ||
| 457 | + ### `module.constants.compileCacheStatus` | ||
| 458 | + | ||
| 459 | + <!-- YAML | ||
| 460 | + added: v22.8.0 | ||
| 461 | + --> | ||
| 462 | + | ||
| 463 | + > Stability: 1.1 - Active Development | ||
| 464 | + | ||
| 465 | + The following constants are returned as the `status` field in the object returned by | ||
| 466 | + [`module.enableCompileCache()`][] to indicate the result of the attempt to enable the | ||
| 467 | + [module compile cache][]. | ||
| 468 | + | ||
| 469 | + <table> | ||
| 470 | + <tr> | ||
| 471 | + <th>Constant</th> | ||
| 472 | + <th>Description</th> | ||
| 473 | + </tr> | ||
| 474 | + <tr> | ||
| 475 | + <td><code>ENABLED</code></td> | ||
| 476 | + <td> | ||
| 477 | + Node.js has enabled the compile cache successfully. The directory used to store the | ||
| 478 | + compile cache will be returned in the <code>directory</code> field in the | ||
| 479 | + returned object. | ||
| 480 | + </td> | ||
| 481 | + </tr> | ||
| 482 | + <tr> | ||
| 483 | + <td><code>ALREADY_ENABLED</code></td> | ||
| 484 | + <td> | ||
| 485 | + The compile cache has already been enabled before, either by a previous call to | ||
| 486 | + <code>module.enableCompileCache()</code>, or by the <code>NODE_COMPILE_CACHE=dir</code> | ||
| 487 | + environment variable. The directory used to store the | ||
| 488 | + compile cache will be returned in the <code>directory</code> field in the | ||
| 489 | + returned object. | ||
| 490 | + </td> | ||
| 491 | + </tr> | ||
| 492 | + <tr> | ||
| 493 | + <td><code>FAILED</code></td> | ||
| 494 | + <td> | ||
| 495 | + Node.js fails to enable the compile cache. This can be caused by the lack of | ||
| 496 | + permission to use the specified directory, or various kinds of file system errors. | ||
| 497 | + The detail of the failure will be returned in the <code>message</code> field in the | ||
| 498 | + returned object. | ||
| 499 | + </td> | ||
| 500 | + </tr> | ||
| 501 | + <tr> | ||
| 502 | + <td><code>DISABLED</code></td> | ||
| 503 | + <td> | ||
| 504 | + Node.js cannot enable the compile cache because the environment variable | ||
| 505 | + <code>NODE_DISABLE_COMPILE_CACHE=1</code> has been set. | ||
| 506 | + </td> | ||
| 507 | + </tr> | ||
| 508 | + </table> | ||
| 509 | + | ||
| 510 | + ### `module.enableCompileCache([cacheDir])` | ||
| 511 | + | ||
| 512 | + <!-- YAML | ||
| 513 | + added: v22.8.0 | ||
| 514 | + --> | ||
| 515 | + | ||
| 516 | + > Stability: 1.1 - Active Development | ||
| 517 | + | ||
| 518 | + * `cacheDir` {string|undefined} Optional path to specify the directory where the compile cache | ||
| 519 | + will be stored/retrieved. | ||
| 520 | + * Returns: {Object} | ||
| 521 | + * `status` {integer} One of the [`module.constants.compileCacheStatus`][] | ||
| 522 | + * `message` {string|undefined} If Node.js cannot enable the compile cache, this contains | ||
| 523 | + the error message. Only set if `status` is `module.constants.compileCacheStatus.FAILED`. | ||
| 524 | + * `directory` {string|undefined} If the compile cache is enabled, this contains the directory | ||
| 525 | + where the compile cache is stored. Only set if `status` is | ||
| 526 | + `module.constants.compileCacheStatus.ENABLED` or | ||
| 527 | + `module.constants.compileCacheStatus.ALREADY_ENABLED`. | ||
| 528 | + | ||
| 529 | + Enable [module compile cache][] in the current Node.js instance. | ||
| 530 | + | ||
| 531 | + If `cacheDir` is not specified, Node.js will either use the directory specified by the | ||
| 532 | + [`NODE_COMPILE_CACHE=dir`][] environment variable if it's set, or use | ||
| 533 | + `path.join(os.tmpdir(), 'node-compile-cache')` otherwise. For general use cases, it's | ||
| 534 | + recommended to call `module.enableCompileCache()` without specifying the `cacheDir`, | ||
| 535 | + so that the directory can be overridden by the `NODE_COMPILE_CACHE` environment | ||
| 536 | + variable when necessary. | ||
| 537 | + | ||
| 538 | + Since compile cache is supposed to be a quiet optimization that is not required for the | ||
| 539 | + application to be functional, this method is designed to not throw any exception when the | ||
| 540 | + compile cache cannot be enabled. Instead, it will return an object containing an error | ||
| 541 | + message in the `message` field to aid debugging. | ||
| 542 | + If compile cache is enabled successfully, the `directory` field in the returned object | ||
| 543 | + contains the path to the directory where the compile cache is stored. The `status` | ||
| 544 | + field in the returned object would be one of the `module.constants.compileCacheStatus` | ||
| 545 | + values to indicate the result of the attempt to enable the [module compile cache][]. | ||
| 546 | + | ||
| 547 | + This method only affects the current Node.js instance. To enable it in child worker threads, | ||
| 548 | + either call this method in child worker threads too, or set the | ||
| 549 | + `process.env.NODE_COMPILE_CACHE` value to compile cache directory so the behavior can | ||
| 550 | + be inherited into the child workers. The directory can be obtained either from the | ||
| 551 | + `directory` field returned by this method, or with [`module.getCompileCacheDir()`][]. | ||
| 552 | + | ||
| 553 | + ### `module.flushCompileCache()` | ||
| 554 | + | ||
| 555 | + <!-- YAML | ||
| 556 | + added: | ||
| 557 | + - v23.0.0 | ||
| 558 | + - v22.10.0 | ||
| 559 | + --> | ||
| 560 | + | ||
| 561 | + > Stability: 1.1 - Active Development | ||
| 562 | + | ||
| 563 | + Flush the [module compile cache][] accumulated from modules already loaded | ||
| 564 | + in the current Node.js instance to disk. This returns after all the flushing | ||
| 565 | + file system operations come to an end, no matter they succeed or not. If there | ||
| 566 | + are any errors, this will fail silently, since compile cache misses should not | ||
| 567 | + interfere with the actual operation of the application. | ||
| 568 | + | ||
| 569 | + ### `module.getCompileCacheDir()` | ||
| 570 | + | ||
| 571 | + <!-- YAML | ||
| 572 | + added: v22.8.0 | ||
| 573 | + --> | ||
| 574 | + | ||
| 575 | + > Stability: 1.1 - Active Development | ||
| 576 | + | ||
| 577 | + * Returns: {string|undefined} Path to the [module compile cache][] directory if it is enabled, | ||
| 578 | + or `undefined` otherwise. | ||
| 579 | + | ||
| 411 | 580 | <i id="module_customization_hooks"></i> | |
| 412 | 581 | ||
| 413 | 582 | ## Customization Hooks | |
@@ -1204,21 +1373,6 @@ added: | |||
| 1204 | 1373 | `path` is the resolved path for the file for which a corresponding source map | |
| 1205 | 1374 | should be fetched. | |
| 1206 | 1375 | ||
| 1207 | - ### `module.flushCompileCache()` | ||
| 1208 | - | ||
| 1209 | - <!-- YAML | ||
| 1210 | - added: | ||
| 1211 | - - v22.10.0 | ||
| 1212 | - --> | ||
| 1213 | - | ||
| 1214 | - > Stability: 1.1 - Active Development | ||
| 1215 | - | ||
| 1216 | - Flush the [module compile cache][] accumulated from modules already loaded | ||
| 1217 | - in the current Node.js instance to disk. This returns after all the flushing | ||
| 1218 | - file system operations come to an end, no matter they succeed or not. If there | ||
| 1219 | - are any errors, this will fail silently, since compile cache misses should not | ||
| 1220 | - interfer with the actual operation of the application. | ||
| 1221 | - | ||
| 1222 | 1376 | ### Class: `module.SourceMap` | |
| 1223 | 1377 | ||
| 1224 | 1378 | <!-- YAML | |
| Back | FazBrowse Home | New Git URL |
0 commit comments