UNPKG

@arco-plugins/webpack-react

Version:
68 lines (67 loc) 3.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ImportPlugin = void 0; var utils_1 = require("@arco-plugins/utils"); var transform_import_1 = require("./utils/transform-import"); var utils_2 = require("./utils"); var config_1 = require("./config"); /** * 给匹配的文件的 babel-loader 增加 babel-plugin-import */ var ImportPlugin = /** @class */ (function () { function ImportPlugin(options) { this.options = options; this.babelPlugins = (0, transform_import_1.getBabelPlugins)(this.options); } ImportPlugin.prototype.apply = function (compiler) { var _this = this; var include = this.options.include; var context = (0, utils_2.getContext)(compiler, this.options.context); var extensions = (0, utils_1.arrify)(this.options.extensions); var isMatch = utils_1.pathUtils.matcher(include, { extensions: extensions, cwd: context }); var loader = require.resolve('./loaders/transform-import'); (0, utils_2.hookNormalModuleLoader)(compiler, config_1.PLUGIN_NAME, function (_loaderContext, module, resource) { if (isMatch(resource) && !(0, utils_2.getLoader)(module.loaders, loader)) { var loaders = module.loaders; var babelLoaderIndex = (0, utils_2.getLoaderIndex)(loaders, 'babel-loader'); var tsLoaderIndex = (0, utils_2.getLoaderIndex)(loaders, 'ts-loader'); var shouldModifyBabelLoader = _this.options.modifyBabelLoader && babelLoaderIndex > -1; var options = { style: _this.options.style, libraryDirectory: _this.options.libraryDirectory, iconBox: _this.options.iconBox, babelConfig: _this.options.babelConfig, }; if (shouldModifyBabelLoader) { var _loader = loaders[babelLoaderIndex]; if (_this.options.modifyBabelLoader === 'merge') { (0, transform_import_1.modifyBabelLoaderMerge)(_loader, options); } else { (0, transform_import_1.modifyBabelLoaderOverride)(_loader, options); } return; } var insertIndex = loaders.length - 1; if (babelLoaderIndex > -1) { insertIndex = babelLoaderIndex + 1; } else if (tsLoaderIndex > -1) { insertIndex = (tsLoaderIndex || 1) - 1; } loaders.splice(insertIndex, 0, { loader: loader, options: options, ident: null, type: null, }); module.loaders = loaders; } }); }; ImportPlugin.prototype.getBabelPlugins = function () { return this.babelPlugins.slice(0); }; return ImportPlugin; }()); exports.ImportPlugin = ImportPlugin;