fixed watching for meta.json changes
This commit is contained in:
2024-05-30 22:05:05 -05:00
parent d95a5533b1
commit ec24ba6c3e
8 changed files with 862 additions and 652 deletions

View File

@@ -10,44 +10,32 @@ export interface runBuildResult {
error: string | null
}
export default async function runBuild(
name: string,
watchCallback: (result: runBuildResult) => void
) {
export default async function runBuild(name: string) {
//read meta file
let { meta, metaString } = readMeta(name)
let paths = AllPaths.script(name)
let result = await runEsbuild(
{
entryPoints: [paths.main],
outfile: paths.dist,
let result = await runEsbuild({
entryPoints: [paths.main],
outfile: paths.dist,
target: 'esnext',
platform: 'node',
format: 'esm',
target: 'esnext',
platform: 'node',
format: 'esm',
bundle: true,
minify: CLIArgs.minify,
bundle: true,
minify: CLIArgs.minify,
define: {
UserScriptName: `'${meta.name}'`,
UserScriptNamespace: `'${meta.namespace}'`,
UserScriptVersion: `'${meta.version}'`,
define: {
UserScriptName: `'${meta.name}'`,
UserScriptNamespace: `'${meta.namespace}'`,
UserScriptVersion: `'${meta.version}'`,
UserScriptDownloadURL: `'${meta.downloadURL}'`,
UserScriptSupportURL: `'${meta.supportURL}'`,
UserScriptHomepageURL: `'${meta.homepageURL}'`,
},
UserScriptDownloadURL: `'${meta.downloadURL}'`,
UserScriptSupportURL: `'${meta.supportURL}'`,
UserScriptHomepageURL: `'${meta.homepageURL}'`,
},
result => {
let error = postBuild(name, result, metaString)
watchCallback({
meta,
error,
})
}
)
})
let error = postBuild(name, result, metaString)
@@ -63,18 +51,8 @@ interface RunEsbuildResult {
errorRaw?: BuildFailure
}
async function runEsbuild(
opts: BuildOptions,
watchCallback: (result: RunEsbuildResult) => void
): Promise<RunEsbuildResult> {
async function runEsbuild(opts: BuildOptions): Promise<RunEsbuildResult> {
opts.write = false
if (CLIArgs.watch) {
opts.watch = {
onRebuild(err, res) {
watchCallback(getResult(err, res))
},
}
}
try {
let res = await build(opts)

View File

@@ -4,6 +4,7 @@ import { updateReadmeFile } from './readmefile'
import runBuild, { runBuildResult } from './build'
import * as Path from 'path'
import getAllPaths from './paths'
import * as chokidar from 'chokidar'
export interface CLIArgsT {
watch: boolean
@@ -140,20 +141,35 @@ async function doCompile() {
) {
let id = scriptMeta.length
function update(result: runBuildResult) {
console.log('WATCH', name, result.meta.version)
scriptMeta[id] = result
scriptMeta[id] = await runBuild(name)
console.log(name, scriptMeta[id].meta.version)
var running = false
async function update(eventName: string) {
if (running) {
return
}
running = true
scriptMeta[id] = await runBuild(name)
console.log(
`WATCH ${eventName}`,
name,
scriptMeta[id].meta.version
)
if (CLIArgs.readme) updateReadmeFile(scriptMeta)
running = false
}
let result = await runBuild(name, update)
console.log(name, result.meta.version)
scriptMeta[id] = result
if (CLIArgs.watch) {
chokidar.watch(path.dir).on('all', update)
}
}
}
return scriptMeta
}
doCompile().then(scriptMeta => {
if (CLIArgs.readme) updateReadmeFile(scriptMeta)