Commit f49ee13

Anton Golub <mailbox@antongolub.ru>
2021-05-13 10:02:31
feat: add `require` to global
1 parent de6e0e2
README.md
@@ -207,6 +207,14 @@ In [ESM](https://nodejs.org/api/esm.html) modules, Node.js does not provide
 `zx` provides such globals, so they can be used in `.mjs` files (via using `zx`
 binary).
 
+### `require`
+
+In [ESM](https://nodejs.org/api/modules.html#modules_module_createrequire_filename) `require` is not defined,
+but sometimes it's convenient to have this legacy api in global.
+```js
+require('./version.js')
+```
+
 ### Importing from other scripts
 
 It's possible to use `$` and others with explicit import.
test.mjs
@@ -72,4 +72,8 @@ import {strict as assert} from 'assert'
   console.log(__filename, __dirname)
 }
 
+{
+  console.log('require("./version.js") =', require('./version.js'))
+}
+
 console.log(chalk.green('🍺 Success!'))
zx.mjs
@@ -17,6 +17,7 @@
 import {join, basename, resolve, dirname} from 'path'
 import os, {tmpdir} from 'os'
 import {promises as fs} from 'fs'
+import { createRequire } from 'module'
 import url from 'url'
 import {v4 as uuid} from 'uuid'
 import {$, cd, question, fetch, chalk, ProcessOutput} from './index.mjs'
@@ -30,6 +31,7 @@ Object.assign(global, {
   chalk,
   fs,
   os,
+  require: createRequire(import.meta.url)
 })
 
 try {