45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
|
/**
|
|||
|
* 打包成单独小组件
|
|||
|
* 用法:
|
|||
|
* 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)
|