UNPKG

@alilc/build-plugin-alt

Version:

build-scripts plugin template for developers

142 lines (141 loc) 6.08 kB
"use strict"; 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;