UNPKG

@arco-plugins/webpack-react

Version:
49 lines (48 loc) 1.86 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var parser_1 = require("@babel/parser"); var loader_utils_1 = require("loader-utils"); var traverse_1 = __importDefault(require("@babel/traverse")); var generator_1 = __importDefault(require("@babel/generator")); // 替换默认语言包 var ReplaceDefaultLanguageLoader = function (resource) { var options = (0, loader_utils_1.getOptions)(this); var _a = options, _b = _a.type, type = _b === void 0 ? 'es' : _b, defaultLanguage = _a.defaultLanguage; var ast = (0, parser_1.parse)(resource, { sourceType: type === 'es' ? 'module' : 'script', }); var replaceLanguage = function (source) { return source.replace(/([a-zA-Z-]+)(.js|.ts)?$/, defaultLanguage); }; if (type === 'lib') { // @ts-ignore (0, traverse_1.default)(ast, { CallExpression: function (path) { var node = path.node; var callee = node.callee; // @ts-ignore if (callee.name === 'require') { // @ts-ignore node.arguments[0].value = replaceLanguage(node.arguments[0].value); } }, }); } if (type === 'es') { // @ts-ignore (0, traverse_1.default)(ast, { ImportDeclaration: function (path) { var node = path.node; var source = node.source; source.value = replaceLanguage(source.value); }, }); } // @ts-ignore return (0, generator_1.default)(ast).code; }; module.exports = ReplaceDefaultLanguageLoader; module.exports.default = ReplaceDefaultLanguageLoader;