diff options
Diffstat (limited to 'scripts/cmd')
-rw-r--r-- | scripts/cmd/build.js | 106 | ||||
-rw-r--r-- | scripts/cmd/copy.js | 124 |
2 files changed, 115 insertions, 115 deletions
diff --git a/scripts/cmd/build.js b/scripts/cmd/build.js index 469f5d0c3..b5eb91195 100644 --- a/scripts/cmd/build.js +++ b/scripts/cmd/build.js @@ -7,70 +7,70 @@ import glob from 'tiny-glob'; /** @type {import('esbuild').BuildOptions} */ const defaultConfig = { - minify: false, - format: 'esm', - platform: 'node', - target: 'node14', - sourcemap: 'inline', - sourcesContent: false, + minify: false, + format: 'esm', + platform: 'node', + target: 'node14', + sourcemap: 'inline', + sourcesContent: false, }; const dt = new Intl.DateTimeFormat('en-us', { - hour: '2-digit', - minute: '2-digit', + hour: '2-digit', + minute: '2-digit', }); export default async function build(...args) { - const config = Object.assign({}, defaultConfig); - const isDev = args.slice(-1)[0] === 'IS_DEV'; - const patterns = args - .filter((f) => !!f) // remove empty args - .map((f) => f.replace(/^'/, '').replace(/'$/, '')); // Needed for Windows: glob strings contain surrounding string chars??? remove these - let entryPoints = [].concat(...(await Promise.all(patterns.map((pattern) => glob(pattern, { filesOnly: true, absolute: true }))))); + const config = Object.assign({}, defaultConfig); + const isDev = args.slice(-1)[0] === 'IS_DEV'; + const patterns = args + .filter((f) => !!f) // remove empty args + .map((f) => f.replace(/^'/, '').replace(/'$/, '')); // Needed for Windows: glob strings contain surrounding string chars??? remove these + let entryPoints = [].concat(...(await Promise.all(patterns.map((pattern) => glob(pattern, { filesOnly: true, absolute: true }))))); - const { type = 'module', dependencies = {} } = await fs.readFile('./package.json').then((res) => JSON.parse(res.toString())); - const format = type === 'module' ? 'esm' : 'cjs'; - const outdir = 'dist'; - await clean(outdir); + const { type = 'module', dependencies = {} } = await fs.readFile('./package.json').then((res) => JSON.parse(res.toString())); + const format = type === 'module' ? 'esm' : 'cjs'; + const outdir = 'dist'; + await clean(outdir); - if (!isDev) { - await esbuild.build({ - ...config, - bundle: entryPoints.length === 1, // Note: only use `bundle` with a single entrypoint! - entryPoints, - outdir, - format, - plugins: [svelte({ isDev })], - }); - return; - } + if (!isDev) { + await esbuild.build({ + ...config, + bundle: entryPoints.length === 1, // Note: only use `bundle` with a single entrypoint! + entryPoints, + outdir, + format, + plugins: [svelte({ isDev })], + }); + return; + } - const builder = await esbuild.build({ - ...config, - watch: { - onRebuild(error, result) { - const date = dt.format(new Date()); - if (error || (result && result.errors.length)) { - console.error(dim(`[${date}] `) + red(error || result.errors.join('\n'))); - } else { - if (result.warnings.length) { - console.log(dim(`[${date}] `) + yellow('⚠ updated with warnings:\n' + result.warnings.join('\n'))); - } - console.log(dim(`[${date}] `) + green('✔ updated')); - } - }, - }, - entryPoints, - outdir, - format, - plugins: [svelte({ isDev })], - }); + const builder = await esbuild.build({ + ...config, + watch: { + onRebuild(error, result) { + const date = dt.format(new Date()); + if (error || (result && result.errors.length)) { + console.error(dim(`[${date}] `) + red(error || result.errors.join('\n'))); + } else { + if (result.warnings.length) { + console.log(dim(`[${date}] `) + yellow('⚠ updated with warnings:\n' + result.warnings.join('\n'))); + } + console.log(dim(`[${date}] `) + green('✔ updated')); + } + }, + }, + entryPoints, + outdir, + format, + plugins: [svelte({ isDev })], + }); - process.on('beforeExit', () => { - builder.stop && builder.stop(); - }); + process.on('beforeExit', () => { + builder.stop && builder.stop(); + }); } async function clean(outdir) { - return del([`${outdir}/**`, `!${outdir}/**/*.d.ts`]); + return del([`${outdir}/**`, `!${outdir}/**/*.d.ts`]); } diff --git a/scripts/cmd/copy.js b/scripts/cmd/copy.js index f31fb3739..925990fe4 100644 --- a/scripts/cmd/copy.js +++ b/scripts/cmd/copy.js @@ -8,76 +8,76 @@ const { resolve, dirname, sep, join } = posix; /** @type {import('arg').Spec} */ const spec = { - '--tgz': Boolean, + '--tgz': Boolean, }; export default async function copy() { - let { _: patterns, ['--tgz']: isCompress } = arg(spec); - patterns = patterns.slice(1); + let { _: patterns, ['--tgz']: isCompress } = arg(spec); + patterns = patterns.slice(1); - if (isCompress) { - const files = await glob(patterns, { gitignore: true }); - const rootDir = resolveRootDir(files); - const destDir = rootDir.replace(/^[^/]+/, 'dist'); + if (isCompress) { + const files = await glob(patterns, { gitignore: true }); + const rootDir = resolveRootDir(files); + const destDir = rootDir.replace(/^[^/]+/, 'dist'); - const templates = files.reduce((acc, curr) => { - const name = curr.replace(rootDir, '').slice(1).split(sep)[0]; - if (acc[name]) { - acc[name].push(resolve(curr)); - } else { - acc[name] = [resolve(curr)]; - } - return acc; - }, {}); + const templates = files.reduce((acc, curr) => { + const name = curr.replace(rootDir, '').slice(1).split(sep)[0]; + if (acc[name]) { + acc[name].push(resolve(curr)); + } else { + acc[name] = [resolve(curr)]; + } + return acc; + }, {}); - let meta = {}; - return Promise.all( - Object.entries(templates).map(([template, files]) => { - const cwd = resolve(join(rootDir, template)); - const dest = join(destDir, `${template}.tgz`); - const metafile = files.find((f) => f.endsWith('meta.json')); - if (metafile) { - files = files.filter((f) => f !== metafile); - meta[template] = JSON.parse(readFileSync(metafile).toString()); - } - return fs.mkdir(dirname(dest), { recursive: true }).then(() => - tar.create( - { - gzip: true, - portable: true, - file: dest, - cwd, - }, - files.map((f) => f.replace(cwd, '').slice(1)) - ) - ); - }) - ).then(() => { - if (Object.keys(meta).length > 0) { - return fs.writeFile(resolve(destDir, 'meta.json'), JSON.stringify(meta, null, 2)); - } - }); - } + let meta = {}; + return Promise.all( + Object.entries(templates).map(([template, files]) => { + const cwd = resolve(join(rootDir, template)); + const dest = join(destDir, `${template}.tgz`); + const metafile = files.find((f) => f.endsWith('meta.json')); + if (metafile) { + files = files.filter((f) => f !== metafile); + meta[template] = JSON.parse(readFileSync(metafile).toString()); + } + return fs.mkdir(dirname(dest), { recursive: true }).then(() => + tar.create( + { + gzip: true, + portable: true, + file: dest, + cwd, + }, + files.map((f) => f.replace(cwd, '').slice(1)) + ) + ); + }) + ).then(() => { + if (Object.keys(meta).length > 0) { + return fs.writeFile(resolve(destDir, 'meta.json'), JSON.stringify(meta, null, 2)); + } + }); + } - const files = await glob(patterns); - await Promise.all( - files.map((file) => { - const dest = resolve(file.replace(/^[^/]+/, 'dist')); - return fs.mkdir(dirname(dest), { recursive: true }).then(() => fs.copyFile(resolve(file), dest)); - }) - ); + const files = await glob(patterns); + await Promise.all( + files.map((file) => { + const dest = resolve(file.replace(/^[^/]+/, 'dist')); + return fs.mkdir(dirname(dest), { recursive: true }).then(() => fs.copyFile(resolve(file), dest)); + }) + ); } function resolveRootDir(files) { - return files - .reduce((acc, curr) => { - const currParts = curr.split(sep); - if (acc.length === 0) return currParts; - const result = []; - currParts.forEach((part, i) => { - if (acc[i] === part) result.push(part); - }); - return result; - }, []) - .join(sep); + return files + .reduce((acc, curr) => { + const currParts = curr.split(sep); + if (acc.length === 0) return currParts; + const result = []; + currParts.forEach((part, i) => { + if (acc[i] === part) result.push(part); + }); + return result; + }, []) + .join(sep); } |