Commit f49ee13
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 {