12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- const nativeModule = require('module')
- const path = require('path')
- const fs = require('fs')
- function createRequire (filename) {
-
- if (!filename) {
- filename = process.cwd()
- }
-
- if (isDir(filename)) {
- filename = path.join(filename, 'index.js')
- }
-
- if (nativeModule.createRequire) {
- return nativeModule.createRequire(filename)
- }
-
- if (nativeModule.createRequireFromPath) {
- return nativeModule.createRequireFromPath(filename)
- }
-
- return _createRequire(filename)
- }
- function _createRequire (filename) {
- const mod = new nativeModule.Module(filename, null)
- mod.filename = filename
- mod.paths = nativeModule.Module._nodeModulePaths(path.dirname(filename))
- mod._compile('module.exports = require;', filename)
- return mod.exports
- }
- function isDir (path) {
- try {
- const stat = fs.lstatSync(path)
- return stat.isDirectory()
- } catch (e) {
-
- return false
- }
- }
- module.exports = createRequire
|