fixed watch mode
This commit is contained in:
12
src/build.ts
12
src/build.ts
@@ -1,4 +1,4 @@
|
||||
import { buildSync, BuildFailure, BuildOptions, BuildResult } from 'esbuild'
|
||||
import { BuildFailure, BuildOptions, BuildResult, build } from 'esbuild'
|
||||
import { existsSync, writeFileSync, unlinkSync } from 'fs'
|
||||
import { UserScriptMetaFull } from './types'
|
||||
import readMeta from './readmeta'
|
||||
@@ -10,7 +10,7 @@ export interface runBuildResult {
|
||||
error: string | null
|
||||
}
|
||||
|
||||
export default function runBuild(
|
||||
export default async function runBuild(
|
||||
name: string,
|
||||
watchCallback: (result: runBuildResult) => void
|
||||
) {
|
||||
@@ -18,7 +18,7 @@ export default function runBuild(
|
||||
let { meta, metaString } = readMeta(name)
|
||||
let paths = AllPaths.script(name)
|
||||
|
||||
let result = runEsbuild(
|
||||
let result = await runEsbuild(
|
||||
{
|
||||
entryPoints: [paths.main],
|
||||
outfile: paths.dist,
|
||||
@@ -63,10 +63,10 @@ interface RunEsbuildResult {
|
||||
errorRaw?: BuildFailure
|
||||
}
|
||||
|
||||
function runEsbuild(
|
||||
async function runEsbuild(
|
||||
opts: BuildOptions,
|
||||
watchCallback: (result: RunEsbuildResult) => void
|
||||
): RunEsbuildResult {
|
||||
): Promise<RunEsbuildResult> {
|
||||
opts.write = false
|
||||
if (CLIArgs.watch) {
|
||||
opts.watch = {
|
||||
@@ -77,7 +77,7 @@ function runEsbuild(
|
||||
}
|
||||
|
||||
try {
|
||||
let res = buildSync(opts)
|
||||
let res = await build(opts)
|
||||
return getResult(null, res)
|
||||
} catch (err) {
|
||||
return getResult(err as BuildFailure, null)
|
||||
|
||||
56
src/main.ts
56
src/main.ts
@@ -85,36 +85,42 @@ readdirSync(AllPaths.base.dist).forEach(file =>
|
||||
)
|
||||
|
||||
//compile scripts
|
||||
let scripts = readdirSync(AllPaths.base.script)
|
||||
let scriptMeta: runBuildResult[] = []
|
||||
async function doCompile() {
|
||||
let scripts = readdirSync(AllPaths.base.script)
|
||||
let scriptMeta: runBuildResult[] = []
|
||||
|
||||
for (let name of scripts) {
|
||||
let path = AllPaths.script(name)
|
||||
for (let name of scripts) {
|
||||
let path = AllPaths.script(name)
|
||||
|
||||
if (
|
||||
!name.endsWith('_') &&
|
||||
existsSync(path.dir) &&
|
||||
lstatSync(path.dir).isDirectory() &&
|
||||
existsSync(path.main) &&
|
||||
lstatSync(path.main).isFile()
|
||||
) {
|
||||
let id = scriptMeta.length
|
||||
if (
|
||||
!name.endsWith('_') &&
|
||||
existsSync(path.dir) &&
|
||||
lstatSync(path.dir).isDirectory() &&
|
||||
existsSync(path.main) &&
|
||||
lstatSync(path.main).isFile()
|
||||
) {
|
||||
let id = scriptMeta.length
|
||||
|
||||
function update(result: runBuildResult) {
|
||||
console.log('WATCH', name, result.meta.version)
|
||||
scriptMeta[id] = result
|
||||
updateReadmeFile(scriptMeta)
|
||||
}
|
||||
|
||||
let result = await runBuild(name, update)
|
||||
console.log(name, result.meta.version)
|
||||
|
||||
function update(result: runBuildResult) {
|
||||
console.log('WATCH', name, result.meta.version)
|
||||
scriptMeta[id] = result
|
||||
updateReadmeFile(scriptMeta)
|
||||
}
|
||||
|
||||
let result = runBuild(name, update)
|
||||
console.log(name, result.meta.version)
|
||||
|
||||
scriptMeta[id] = result
|
||||
}
|
||||
return scriptMeta
|
||||
}
|
||||
doCompile().then(scriptMeta => {
|
||||
updateReadmeFile(scriptMeta)
|
||||
|
||||
updateReadmeFile(scriptMeta)
|
||||
|
||||
console.log(
|
||||
`\nFinished Compiling\n${CLIArgs.watch ? 'Listening for Changes\n' : ''}`
|
||||
)
|
||||
console.log(
|
||||
`\nFinished Compiling\n${
|
||||
CLIArgs.watch ? 'Listening for Changes\n' : ''
|
||||
}`
|
||||
)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user