Scriptables/pack.js
2022-06-02 17:00:01 +08:00

45 lines
1.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 打包成单独小组件
* 用法:
* node pack.js Scripts/「源码」小组件示例.js
* 将会在`Dist`目录生成「小件件」小组件示例.js 文件,这个文件可以发送给用户单独使用
*/
const process = require('process')
const os = require('os')
const fs = require('fs')
const path = require('path')
if (process.argv.length !== 3) {
console.log('[!] 用法node pack Scripts/「源码」xxx.js')
process.exit(0)
}
const SAVE_PATH = path.join(__dirname, "Dist")
const file_name = process.argv[2]
const out_name = file_name.replace("「源码」", "「小件件」").replace("Scripts", "Dist")
// 创建目录
if (!fs.existsSync(SAVE_PATH)) {
fs.mkdirSync(SAVE_PATH)
}
// 组合文件
const runtime_file = fs.readFileSync(path.join(__dirname, "Scripts", "「小件件」开发环境.js"))
const runtime_code = runtime_file.toString("utf-8").split("// @running.end")[0]
const widget_file = fs.readFileSync(path.join(__dirname, file_name))
const widget_code = widget_file.toString("utf-8");
const widget_class = widget_code.split("// @组件代码开始")[1].split("// @组件代码结束")[0]
const widget_header = widget_code.split('// icon-color:')[1].split('\n')[0];
let result_code = `// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color:${widget_header}
${runtime_code}
${widget_class}
await Running(Widget)`
// 写入文件
fs.writeFileSync(path.join(__dirname, out_name), result_code)
console.log('[*] 文件已经保存到:' + out_name)