vite-require
Version:
Like Webpack's require
46 lines (45 loc) • 1.85 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.viteRequire = void 0;
const path_1 = __importDefault(require("path"));
const utils_1 = require("./utils");
const analyze_1 = require("./analyze");
const dynamic_require_1 = require("./dynamic-require");
function viteRequire(options = {}) {
const extensions = utils_1.JS_EXTENSIONS
.concat(utils_1.KNOWN_SFC_EXTENSIONS)
.concat(utils_1.KNOWN_ASSET_TYPES)
.concat(utils_1.KNOWN_CSS_TYPES);
let config;
let dynamicRequire;
return {
name: 'vite-require',
configResolved(_config) {
var _a;
config = _config;
options.extensions = [...new Set((((_a = config.resolve) === null || _a === void 0 ? void 0 : _a.extensions) || extensions).concat(options.extensions || []))];
dynamicRequire = new dynamic_require_1.DynamicRequire(options, _config);
},
transform(code, id) {
var _a;
const pureId = (0, utils_1.cleanUrl)(id);
if (/node_modules\/(?!\.vite\/)/.test(pureId))
return;
if (!extensions.includes(path_1.default.extname(pureId)))
return;
if (!(0, utils_1.isCommonjs)(code))
return;
if (((_a = options.filter) === null || _a === void 0 ? void 0 : _a.call(options, pureId)) === false)
return;
const ast = this.parse(code);
const analyzed = (0, analyze_1.analyze)(ast, code);
if (!analyzed.require.length)
return;
return dynamicRequire.transform(analyzed, id);
},
};
}
exports.viteRequire = viteRequire;