create-ias-lowcode
Version:
52 lines (45 loc) • 1.86 kB
JavaScript
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();