UNPKG

create-ias-lowcode

Version:

52 lines (45 loc) 1.86 kB
const axios = require('axios'); const fs = require('fs'); const path = require('path'); const { globSync } = require('glob'); const FormData = require('form-data'); // Use Node.js form-data package instead of browser's FormData // 配置参数 const API_ENDPOINT = 'http://127.0.0.1:9090/api/files'; // Fixed URL format const API_KEY = process.env.API_KEY; // 从环境变量读取密钥 const BUILD_DIR = '../dist/types'; // 打包目录 // 获取命令行参数,可能包含特定的组件名称 const componentsArg = process.argv[2]; // 主流程 async function main() { try { // 1. 打包文件 (如果未单独执行build) // 可在此处添加压缩命令:tar -czf ${TARGET_FILE} ${BUILD_DIR} // 2. 读取文件内容 const filePath = path.join(__dirname, `${BUILD_DIR}/${componentsArg}`); // 寻找后缀为rules-schema.d.ts结尾的文件 const files = globSync(filePath+'/*rules-schema.d.ts', { ignore: 'node_modules/**', // 忽略 node_modules }); if (files.length === 0) { throw new Error('未找到匹配的文件'); } console.log('Finding files at:', filePath, files); const form = new FormData(); // 添加文件流(重要!) files.forEach(filePath => { form.append('file', fs.createReadStream(filePath), `${componentsArg}-rules-schema.d.ts`); }); // 4. 调用上传接口 const response = await axios.post(API_ENDPOINT, form, { headers: { ...form.getHeaders(), // 让 form-data 生成正确的 headers 'Authorization': `Bearer ${API_KEY}` }, }); console.log('✅ 上传成功:', response.data); } catch (error) { console.error('❌ 上传失败:', error.response?.data || error.message); process.exit(1); } } main();