@alilc/build-plugin-alt
Version:
build-scripts plugin template for developers
89 lines (88 loc) • 4.05 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const moment_locales_webpack_plugin_1 = __importDefault(require("moment-locales-webpack-plugin"));
const path = __importStar(require("path"));
exports.default = (config, { rootDir, entry, type, pkg, mainFile, generateMeta }) => {
config.target('web');
config.context(rootDir);
config.merge({
entry,
});
config.output.filename('[name].js');
// remove CopyWebpackPlugin (component compile do not have public folder)
config.plugins.delete('CopyWebpackPlugin');
config.node.set('fs', 'empty');
// disable vendor
config.optimization.splitChunks({ cacheGroups: {} });
config.plugin('momentLocale').use(moment_locales_webpack_plugin_1.default, [{
localesToKeep: ['en', 'zh-cn']
}]);
// config.resolve.modules
// .add(path.join(rootDir, 'node_modules'))
// .add('node_modules')
// .add(path.join(__dirname, '../node_modules'));
config.resolve.alias.set(`__lowcode-${type}-demo__`, path.join(rootDir, 'src/index'));
config.externals({
"react": "var window.React",
"react-dom": "var window.ReactDOM",
"prop-types": "var window.PropTypes",
"@alifd/next": "var window.Next",
"@ali/visualengine": "var window.VisualEngine",
"@ali/visualengine-utils": "var window.VisualEngineUtils",
"@ali/lowcode-engine": "var window.AliLowCodeEngine",
"@alilc/lowcode-engine": "var window.AliLowCodeEngine",
"@ali/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
"@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
"monaco-editor/esm/vs/editor/editor.api": "var window.monaco",
"monaco-editor/esm/vs/editor/editor.main.js": "var window.monaco",
"@alilc/lowcode-editor-skeleton": "var window.AliLowCodeEngine.common.skeletonCabin",
"@alilc/lowcode-editor-core": "var window.AliLowCodeEngine.common.editorCabin",
"@alilc/lowcode-designer": "var window.AliLowCodeEngine.common.designerCabin",
});
// see https://github.com/webpack/webpack/releases/tag/v4.0.0 for details
config.module.rule('mjs2js')
.test(/\.mjs$/)
.include
.add(/node_modules/)
.end()
.type('javascript/auto');
if (type === 'plugin' && generateMeta && pkg.lcMeta) {
['tsx', 'jsx'].forEach((ruleName) => {
config.module.rule(ruleName).use('babel-loader').tap((options) => {
return Object.assign(Object.assign({}, options), { plugins: [
...options.plugins,
[require.resolve('./babelPluginMeta'), {
filename: mainFile,
meta: pkg.lcMeta,
}],
] });
});
});
}
};