mtl-js-sdk
Version:
ynf-fw-mtl-api
133 lines (118 loc) • 3.89 kB
JavaScript
// 更新mtl在cdn地址中版本
const fs = require("fs")
const axios = require("axios")
const formData = require("form-data")
// 上传mtl.min.js 备份文件.
function putMtl(res) {
const files = fs.readdirSync(res.path)
files.forEach((item) => {
if (!item.includes(".js.map") && !item.includes(".txt")) {
request(`/mtl/${res.version}/`, fs.createReadStream(`${res.path}/${item}`))
}
})
}
// 上传公用mtl.min.js
function putReleaseMtl(res) {
const files = fs.readdirSync(res.path)
files.forEach((item) => {
// map文件不上传
if (!item.includes(".js.map") && !item.includes(".txt")) {
request("/mtl/release/", fs.createReadStream(`${res.path}/${item}`))
}
})
}
// 上传mtlVersion.js
function putMtlVersion(res) {
request("/mtl/", fs.createReadStream(`${res.path}/mtlVersion.js`))
}
// 上传
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)
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版本/release"
const version = JSON.parse(data).version
const fileName = `${mtlVersion}/${version}`
if (!fs.existsSync(fileName)) {
fs.mkdirSync(`${fileName}`, { recursive: true }) // 文件夹
}
// 文件
const distPath = "./dist"
const files = fs.readdirSync(distPath)
files.forEach((item) => {
if (!item.includes(".js.map") && !item.includes(".txt")) {
fs.copyFileSync(`${distPath}/${item}`, `${fileName}/${item}`)
}
})
fs.writeFileSync(
`${fileName}/mtlVersion.js`,
JSON.stringify({
version: version,
path: "ht" + "tps://design.yonyou" + "cloud.com/library/mtl/release/mtl.min.js",
})
)
// 发送邮件使用
const email = `${mtlVersion}/email`
if (!fs.existsSync(email)) {
fs.mkdirSync(email) // 文件夹
}
const allPlatform = `${email}/allPlatform`
if (!fs.existsSync(allPlatform)) {
fs.mkdirSync(allPlatform)
}
fs.copyFileSync("./dist/mtl.min.js", `${allPlatform}/mtl.min.js`)
fs.copyFileSync("./dist/mtl.min.js", `${allPlatform}/mtl.min.bundle`)
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) {
putMtl(res)
putReleaseMtl(res)
putMtlVersion(res)
})