How do you define node_modules as externs in Closure Compiler?

Active3 hr before
Viewed126 times

6 Answers


The issue is that you wish for the compiler to somehow recognize that certain require calls are internal, namely that the required module should be processed by the compiler as source, and others are external so should be left alone. There isn't a good way to handle this situation currently.,When the --process_common_js_modules is specified, the compiler recognizes require statements and expands them in a similar fashion to the way macros work in other languages. By aliasing the require statements that should remain external, the compiler will not recognize them and thus not expand them.,In this scenario you would completely omit any require statements to external modules. The compiler would only process code with internal require statements and modules. After compilation, you would prepend the external require statements:,Because crypto is declared in an extern, the compiler will correctly recognize the type and symbol name.

Header JS To Be Prepended

var crypto = require('crypto');

Source To Be Compiled


Source To Be Compiled

var externalRequire = require;
/** @suppress {duplicate} this is already defined in externs */
var crypto = externalRequire('crypto');
load more v

You can access the compiler in a JS program by importing google-closure-compiler:, A JavaScript checker and optimizer. , A JavaScript checker and optimizer. ,This starts the compiler in interactive mode. Type:

See https: //

   PiperOrigin - RevId: 399113460
load more v

TypeScript 4.2 allows you to specify an abstract modifier on constructor signatures.,You can read up more on abstract construct signatures on its pull request.,The TypeScript compiler will transpile for..of arrays to idiomatic ES3/ES5 JavaScript when targeting those versions:,When using this option, the TypeScript compiler will give some very verbose output about why a file ended up in your program. To read it more easily, you can forward the output to a file, or pipe it to a program that can easily view it.

If your functions are only able to handle string named property keys, use Extract<keyof T, string> in the declaration:

tsfunction useKey<T, K extends Extract<keyof T, string>>(o: T, k: K) {  var name: string = k; // OK}
load more v

The above test will fail with Error: Resolution method is overspecified. Specify a callback *or* return a Promise; not both.. In versions older than v3.0.0, the call to done() is effectively ignored.,New in v9.1.0 Fail test run if no tests are encountered with exit-code: 1.,auto run tests on file save,The test (and reports the result)

Install with npm globally:

$ npm install--global mocha
load more v

inserts Closure-compatible JSDoc annotations on functions/classes/etc,converts ES6 modules into goog.module modules,generates externs.js from TypeScript d.ts (and declare, see below),The names of elements that have an exporting decorator are preserved through the Closure compilation process by applying an @export tag to them.


declare interface JSONResult {
   username: string;
let r = JSON.parse(input) as JSONResult;


/** @ExportDecoratedItems */
function myDecorator() {
   // ...

class DoNotRenameThisClass {
TEST_FILTER = my_golden_test node--inspect - brk = 4332. / node_modules / .bin / jasmine out / test /*.js

On a new branch, run

# tsickle releases are all minor releases
for now, see npm help version.
$ npm version minor

Instead, push the branch to master directly via:

$ git push origin mybranch: master

Also push the tag.

$ git push origin v0 .32 .0 # but use correct version

From the master branch run:

npm config set registry https: //
   npm login
npm publish
load more v

In npm version 6, the audit feature was introduced to help developers identify and fix security vulnerabilities in installed packages.[22] The source of security vulnerabilities were taken from reports found on the Node Security Platform (NSP) and has been integrated with npm since npm's acquisition of NSP.[23] ,^ npm. "'npm audit': identify and fix insecure dependencies". The npm Blog. Retrieved 14 August 2018. ,npm is written entirely in JavaScript and was developed by Isaac Z. Schlueter as a result of having "seen module packaging done terribly" and with inspiration from other similar projects such as PEAR (PHP) and CPAN (Perl).[5] ,In April 2020, a small package called is-promise resulted in outage in serverless applications and deployments worldwide by virtue of being a dependency of many big and important applications.[15]

load more v

Other "define-undefined" queries related to "How do you define node_modules as externs in Closure Compiler?"