mtl-js-sdk
Version:
ynf-fw-mtl-api
158 lines (145 loc) • 4.97 kB
JavaScript
// 更新mtl在cdn地址中版本
const fs = require("fs")
const axios = require("axios")
const formData = require("form-data")
// 上传公用mtl.min.js
function putReleaseMtl(res) {
const files = fs.readdirSync(res.path)
files.forEach((item) => {
// request("/mtl/beta/", fs.createReadStream(`${res.path}/${item}`))
console.log(item);
if (item === "mtl.min.beta.js") {
console.log(1);
request("/mtl/beta/", fs.createReadStream(`${res.path}/mtl.min.beta.js`))
}
})
}
function putMtlMP(path, requestPath) {
const files = fs.readdirSync(path)
files.forEach((item) => {
const sourcePath = `${path}/${item}`
const stat = fs.statSync(sourcePath)
if (stat.isDirectory()) {
putMtl(sourcePath, `${requestPath}/${item}/`)
} else {
if (!fileNames.includes(item) && !item.includes(".js.map") && !item.includes(".txt")) {
request(requestPath, fs.createReadStream(sourcePath))
}
}
})
}
// 上传
async function getHeaders(form) {
return new Promise((resolve, reject) => {
form.getLength((err, length) => {
if (err) reject(err)
const headers = Object.assign({"Content-Length": length}, form.getHeaders())
resolve(headers)
})
})
}
async function request(path, file) {
let format = new formData()
format.append("AccessKey", AccessKey)
format.append("AccessSecret", AccessSecret)
format.append("filePath", path)
format.append("file", file)
const headers = await getHeaders(format)
console.log(format);
axios({
url: "ht" + "tps://package.yonyou" + "cloud.com/npm/foreign/upload",
data: format,
method: "post",
headers,
}).then(function (res) {
console.log("000000", res.data)
}).catch(function (err) {
console.log("00-0--", err)
})
}
// 创建文件
function makeFiles(callback) {
try {
let data = fs.readFileSync("./package.json", "utf-8")
let mtlVersion = "../mtl版本/beta"
const version = JSON.parse(data).version
const fileName = `${mtlVersion}/${version}`
if (!fs.existsSync(fileName)) {
fs.mkdirSync(`${fileName}`) // 文件夹
}
// 文件
const distPath = "./dist"
const files = fs.readdirSync(distPath)
files.forEach((item) => {
if (item === "mtl.min.js") {
fs.copyFileSync(`${distPath}/${item}`, `${fileName}/mtl.min.beta.js`)
}
})
callback({version, path: fileName})
} catch (error) {
console.log("error message:", error)
}
}
function makeFilesMP(callback) {
try {
// 获取版本号
let data = fs.readFileSync("./package.json", "utf-8")
const version = JSON.parse(data).version
// 指定文件生成路径.
let mtlVersion = "../mtl版本/beta"
const fileName = `${mtlVersion}/${version}`
// 判断文件夹是否存在
if (!fs.existsSync(fileName)) {
fs.mkdirSync(`${fileName}`, {recursive: true}) // 文件夹
}
// dist 产物 copy 到指定目录
const distPath = "./dist"
const files = fs.readdirSync(distPath)
files.forEach((item) => {
if (!fileNames.includes(item) && !item.includes(".js.map")) {
const subPath = `${distPath}/${item}`
const targetPath = `${fileName}/${item}`
const stat = fs.statSync(subPath)
if (stat.isDirectory(subPath)) {
if (!fs.existsSync(targetPath)) {
fs.mkdirSync(targetPath)
}
const subFiles = fs.readdirSync(subPath)
subFiles.forEach((subItem) => {
if (!subItem.includes(".js.map")) {
fs.copyFileSync(`${subPath}/${subItem}`, `${targetPath}/${subItem}`)
}
})
} else {
fs.copyFileSync(subPath, `${fileName}/${item}`)
}
}
})
callback({version, path: fileName})
} catch (error) {
console.log("error message:", error)
}
}
/**
* 需要添加AccessKey 和 AccessSecret。
* npm run upload AccessKey=xxx AccessSecret=xxx
*/
//
const arguments = process.argv.splice(2)
let AccessKey = ""
let AccessSecret = ""
if (arguments && Array.isArray(arguments)) {
arguments.map((item) => {
if (item.includes("AccessKey")) {
AccessKey = item.replace("AccessKey=", "")
} else if (item.includes("AccessSecret")) {
AccessSecret = item.replace("AccessSecret=", "")
}
})
}
// makeFiles(function (res) {
// putReleaseMtl(res)
// })
makeFilesMP(function (res) {
putMtlMP(res.path, "/mtl/beta/cdn/")
})