@alilc/build-plugin-alt
Version:
build-scripts plugin template for developers
142 lines (141 loc) • 6.08 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 build_scripts_config_1 = require("build-scripts-config");
const path = __importStar(require("path"));
const babel_1 = __importDefault(require("build-plugin-component/src/compiler/babel"));
const openBrowser_1 = __importDefault(require("react-dev-utils/openBrowser"));
const fs_extra_1 = require("fs-extra");
const baseConfig_1 = __importDefault(require("./baseConfig"));
const devConfig_1 = __importDefault(require("./devConfig"));
const builtinConfig_1 = __importDefault(require("./builtinConfig"));
const config_1 = __importDefault(require("./inject/config"));
const makeInjectInfo_1 = __importDefault(require("./inject/makeInjectInfo"));
const apis_1 = __importDefault(require("./inject/apis"));
const dropMinicss_1 = __importDefault(require("./utils/dropMinicss"));
const getIp_1 = require("./utils/getIp");
const plugin = ({ context, registerTask, onGetWebpackConfig, onHook, log }, options) => {
const { type, inject, openUrl, generateMeta = true, library, usePrivateIp } = options;
const { command, rootDir, userConfig, pkg } = context;
const mainFilePrefix = path.join(rootDir, 'src', pkg.main.replace(/lib\/(.*).js/, "$1"));
let mainFile = `${mainFilePrefix}.tsx`;
if (!(0, fs_extra_1.existsSync)(mainFile)) {
mainFile = `${mainFilePrefix}.jsx`;
}
if (command === 'start') {
if (type !== 'component') {
const webpackConfig = (0, build_scripts_config_1.getWebpackConfig)('development');
const taskName = `lowcode-${type}-demo`;
registerTask(taskName, webpackConfig);
onGetWebpackConfig(taskName, config => {
(0, baseConfig_1.default)(config, {
rootDir,
type,
pkg,
mainFile,
generateMeta,
entry: {
index: path.join(__dirname, `./entry/${type}.js`),
preview: path.join(__dirname, './entry/preview.js'),
}
});
(0, devConfig_1.default)(config, { pkg });
if (inject) {
(0, dropMinicss_1.default)(config);
(0, config_1.default)(config, { rootDir, pkg, type });
}
});
if (type === 'setter') {
const builtInTaskName = `lowcode-${type}-builtin`;
const builtInWebpackConfig = (0, build_scripts_config_1.getWebpackConfig)('development');
registerTask(builtInTaskName, builtInWebpackConfig);
onGetWebpackConfig(builtInTaskName, (config) => {
(0, baseConfig_1.default)(config, {
rootDir,
type,
mainFile,
entry: {
component: path.join(__dirname, './builtIn/component.js'),
}
});
(0, builtinConfig_1.default)(config);
});
}
}
else {
// onGetWebpackConfig('lowcode-dev', (config) => {
// console.log(config.toConfig());
// })
}
onHook('after.start.devServer', ({ url }) => {
if (inject) {
if (openUrl) {
(0, openBrowser_1.default)(openUrl);
}
else {
(0, openBrowser_1.default)('https://lowcode-engine.cn/demo/demo-general/index.html?debug');
}
}
else {
(0, openBrowser_1.default)(openUrl || url);
}
});
onHook('before.start.load', ({ args }) => {
if (inject) {
let host = '127.0.0.1';
if (usePrivateIp) {
host = (0, getIp_1.getIp)();
}
console.log(host);
(0, makeInjectInfo_1.default)({ pkg, host, port: args.port, type, library });
(0, apis_1.default)();
}
});
}
else if (command === 'build' && type !== 'component') {
const { basicComponents = [] } = userConfig;
onHook('before.build.load', () => {
const babelPlugins = [];
if (type === 'plugin' && generateMeta && pkg.lcMeta) {
babelPlugins.push([require.resolve('./babelPluginMeta'), {
filename: mainFile,
meta: pkg.lcMeta,
}]);
}
(0, babel_1.default)(context, {
log,
type: 'react',
userOptions: {
basicComponents,
babelPlugins,
}
});
});
}
};
exports.default = plugin;