diff --git a/cli.js b/cli.js index e18de6e3..a8288dbc 100755 --- a/cli.js +++ b/cli.js @@ -8,21 +8,17 @@ const pkg = require('./package.json') const { CONFIG_DEFAULT } = require('./lib/constants') const { log } = require('./lib/log') -const globalConfig = require('./lib/config') +const { createConfig, getConfigFile } = require('./lib/config') const { watch } = require('./lib/watch') const { build } = require('./lib/build') const { serve } = require('./lib/serve') -function warnOnBadGlob (output) { - if (/\.(js|jsx|ts|tsx)$/.test(output)) { - const msg = ` Your specified output '${output}' looks like a file. Maybe you need surround your file glob with quotes?` - const issue = ` More info here: https://github.com/sure-thing/presta/issues/15` - log(`${c.yellow(`presta`)}\n\n${msg}\n\n${issue}\n`) - exit() - } -} - function registerRuntime (options = {}) { + require('module-alias').addAliases({ + '@': process.cwd(), + 'presta:internal': __dirname // wherever this is running from + }) + require('esbuild-register/dist/node').register(options) } @@ -32,33 +28,36 @@ prog .version(pkg.version) .option( '--config, -c', - `Path to a config file. (default /${CONFIG_DEFAULT})` + `Path to a config file — defaults to ${CONFIG_DEFAULT}` + ) + .option( + '--output, -o', + `Specify output directory for built files — defaults to ./build` + ) + .option( + '--assets, -a', + `Specify static asset directory — defaults to ./public` ) - .option('--assets, -a', `Specify static asset directory. (default /public)`) prog - .command( - 'build [files] [output]', - 'Render files(s) to output directory (defaults to ./build)', - { default: true } - ) + .command('build', 'Render files(s) to output directory.', { default: true }) .example(`build`) - .example(`build files/**/*.js build`) + .example(`build files/**/*.js`) .example(`build -c ${CONFIG_DEFAULT}`) - .action(async (files, output, opts) => { + .action(async opts => { process.env.PRESTA_ENV = 'production' registerRuntime() console.clear() - warnOnBadGlob(output) - - const config = globalConfig.create({ - ...opts, - files, - output, - env: 'production' + const config = createConfig({ + env: 'production', + configFile: getConfigFile(opts.config), + cliArgs: { + ...opts, + files: opts._ + } }) log(`${c.blue('~ presta build')}\n`) @@ -67,26 +66,27 @@ prog }) prog - .command('watch [files] [output]') - .option('--no-serve, -n', `Don't serve output directory`, false) - .describe('Watch and build page(s) to output directory') + .command('watch') + .option('--no-serve, -n', `Do not run local dev server.`, false) + .describe('Watch and build files(s) to output directory') .example(`watch`) - .example(`watch files/**/*.js build`) + .example(`watch ./files/**/*.js`) + .example(`watch ./files/**/*.js -o ./out`) .example(`watch -c ${CONFIG_DEFAULT}`) - .action(async (files, output, opts) => { + .action(async opts => { process.env.PRESTA_ENV = 'development' registerRuntime() console.clear() - warnOnBadGlob(output) - - const config = globalConfig.create({ - ...opts, - files, - output, - env: 'development' + const config = createConfig({ + env: 'development', + configFile: getConfigFile(opts.config), + cliArgs: { + ...opts, + files: opts._ + } }) if (!opts.n) { diff --git a/docs/src/pages/Docs.jsx b/docs/src/pages/Docs.jsx index a1bb8671..2f11dc4e 100644 --- a/docs/src/pages/Docs.jsx +++ b/docs/src/pages/Docs.jsx @@ -19,6 +19,7 @@ import { Github } from '@/src/icons/Github' import { Logo } from '@/src/components/Logo' export async function getStaticPaths () { + // const [file] = source(path.resolve(__dirname, '../content/docs.md')) return ['/docs'] } diff --git a/lib/build.js b/lib/build.js index f41d8812..83717112 100644 --- a/lib/build.js +++ b/lib/build.js @@ -27,7 +27,7 @@ async function build (config, options = {}) { let dynamicTime = 0 let copyTime = 0 - await Promise.all([ + await Promise.allSettled([ (async () => { if (staticIds.length) { const time = timer() @@ -60,12 +60,12 @@ async function build (config, options = {}) { } })(), (async () => { - if (fs.existsSync(config.assets)) { + if (fs.existsSync(config.merged.assets)) { const time = timer() fs.copySync( - config.assets, - path.join(config.output, OUTPUT_STATIC_DIR) // TODO put in config? + config.merged.assets, + path.join(config.merged.output, OUTPUT_STATIC_DIR) ) copyTime = time() diff --git a/lib/compile.js b/lib/compile.js index 1f52b7fb..0d0d158b 100644 --- a/lib/compile.js +++ b/lib/compile.js @@ -5,8 +5,8 @@ const { OUTPUT_DYNAMIC_PAGES_ENTRY } = require('./constants') function compile (config) { return buildSync({ - entryPoints: [path.join(config.output, OUTPUT_DYNAMIC_PAGES_ENTRY)], - outfile: path.join(config.output, 'functions', 'presta.js'), + entryPoints: [path.join(config.merged.output, OUTPUT_DYNAMIC_PAGES_ENTRY)], + outfile: path.join(config.merged.output, 'functions', 'presta.js'), bundle: true, platform: 'node', target: ['node12'], diff --git a/lib/config.js b/lib/config.js index df186f4e..93f52ee7 100644 --- a/lib/config.js +++ b/lib/config.js @@ -6,108 +6,72 @@ const { debug } = require('./debug') const { log } = require('./log') const cwd = process.cwd() - -function makeConfigPathsAbsolute (config, cwd) { - if (config.files) - config.files = [].concat(config.files).map(p => path.resolve(p)) - if (config.output) config.output = path.resolve(config.output) - if (config.assets) config.assets = path.resolve(config.assets) - - return config +const pid = process.pid +const manager = { [pid]: { cliArgs: {}, configFile: {} } } + +function resolvePaths (obj) { + if (obj.files) obj.files = [].concat(obj.files).map(p => path.resolve(cwd, p)) + if (obj.output) obj.output = path.resolve(cwd, obj.output) + if (obj.assets) obj.assets = path.resolve(cwd, obj.assets) + return obj } -/* - * Don't write to these internal properties: - * cliArgs - the raw CLI args - * configFile - the full config file, if present - */ -function create (cliArgs) { - // leave this here in case we want it to be user-configurable - require('module-alias').addAliases({ - '@': cwd, - 'presta:internal': path.join(__dirname, '..') - }) - - let configFile = {} - let configFilepath = path.resolve(cliArgs.config || CONFIG_DEFAULT) - +function getConfigFile (filepath) { /* * Since we want to let the user know right away if their config has issues, * just try to require it right away */ try { - configFile = require(configFilepath) + return require(path.resolve(filepath || CONFIG_DEFAULT)) } catch (e) { // if user specified a file, must be a syntax error - if (cliArgs.config) { - log(`${c.red('~ error')} ${configFilepath}\n\n > ${e.stack || e}\n`) + if (!!filepath) { + log(`${c.red('~ error')} ${filepath}\n\n > ${e.stack || e}\n`) } - configFile = {} - configFilepath = undefined + return {} } - - cliArgs = makeConfigPathsAbsolute(cliArgs, cwd) - configFile = makeConfigPathsAbsolute(configFile, cwd) - - const config = merge( - { - env: cliArgs.env, - cliArgs: cliArgs, - cwd, - configFilepath, - defaultConfigFilepath: path.join(cwd, CONFIG_DEFAULT) - }, - configFile - ) - - debug('config', config) - - return config } -/* - * Merge a new presta.config.js file with the existing CLI args - * and internal config - */ -function merge (prev, next) { - const output = path.resolve( - prev.cliArgs.output || next.output || path.resolve(prev.cwd, 'build') - ) - const config = { - ...prev, - ...next, - configFile: makeConfigPathsAbsolute(next, prev.cwd), - files: [].concat(prev.cliArgs.files || []).concat(next.files || []), - output, - assets: - prev.cliArgs.assets || next.assets || path.resolve(prev.cwd, 'public'), - dynamicEntryFilepath: path.join(output, OUTPUT_DYNAMIC_PAGES_ENTRY) +function createConfig ({ + env = manager[pid].env, + configFile = manager[pid].configFile, + cliArgs = manager[pid].cliArgs +}) { + configFile = resolvePaths({ ...configFile }) // clone read-only obj + cliArgs = resolvePaths(cliArgs) + + const merged = { + output: cliArgs.output || configFile.output || path.resolve('build'), + assets: cliArgs.assets || configFile.assets || path.resolve('public'), + files: + cliArgs.files && cliArgs.files.length + ? cliArgs.files + : configFile.files + ? [].concat(configFile.files) + : [] } - return makeConfigPathsAbsolute(config, prev.cwd) -} + manager[pid] = { + env, + cwd, + configFile, + cliArgs, + merged, + configFilepath: path.resolve(cliArgs.config || CONFIG_DEFAULT), + dynamicEntryFilepath: path.join(merged.output, OUTPUT_DYNAMIC_PAGES_ENTRY) + } -/* - * Clean previous presta.config.js values from the active - * internal config object - */ -function unmerge (active) { - const output = active.cliArgs.output || path.resolve(active.cwd, 'build') + return manager[pid] +} - const config = { - ...active, - configFile: {}, - files: active.files.filter( - p => ![].concat(active.configFile.files || []).find(pp => pp === p) - ), - output, - assets: active.cliArgs.assets || path.resolve(active.cwd, 'public'), - configFilepath: undefined, - dynamicEntryFilepath: path.join(output, OUTPUT_DYNAMIC_PAGES_ENTRY) - } +function removeConfigValues () { + manager[pid] = createConfig({ + ...manager[pid], + configFile: {} + }) - return config + return manager[pid] } /* @@ -117,15 +81,26 @@ function unmerge (active) { function serialize (config) { return JSON.stringify({ cwd: config.cwd, - files: config.files, - output: config.output, - assets: config.assets + files: config.merged.files, + output: config.merged.output, + assets: config.merged.assets }) } +function getCurrentConfig () { + return manager[pid] +} + +function clearCurrentConfig () { + manager[pid] = { cliArgs: {}, configFile: {} } +} + module.exports = { - create, - merge, - unmerge, + getCurrentConfig, + clearCurrentConfig, + resolvePaths, + getConfigFile, + createConfig, + removeConfigValues, serialize } diff --git a/lib/createDynamicEntry.js b/lib/createDynamicEntry.js index 11b90fa5..374102e7 100644 --- a/lib/createDynamicEntry.js +++ b/lib/createDynamicEntry.js @@ -1,18 +1,22 @@ const fs = require('fs-extra') const path = require('path') +const { CONFIG_DEFAULT } = require('./constants') const { debug } = require('./debug') const { serialize } = require('./config') function template (sourceFiles, config) { const presta = config.env === 'production' ? 'presta' : 'presta:internal' + const configFilepath = Object.keys(config.configFile).length + ? config.configFilepath + : undefined return `import { createRouter } from '${presta}/lib/router'; import { createHandler } from '${presta}/lib/handler'; ${ - config.configFilepath - ? `import * as userConfig from '${config.configFilepath}'` + configFilepath + ? `import * as userConfig from '${configFilepath}'` : `const userConfig = {}` } ${sourceFiles @@ -29,7 +33,7 @@ export const handler = createHandler(router, config); } function createDynamicEntry (sourceFiles, config) { - const entryFile = path.join(config.dynamicEntryFilepath) + const entryFile = config.dynamicEntryFilepath fs.outputFileSync(entryFile, template(sourceFiles, config)) diff --git a/lib/getFiles.js b/lib/getFiles.js index 00bbed60..aa63a299 100644 --- a/lib/getFiles.js +++ b/lib/getFiles.js @@ -10,11 +10,11 @@ function isStatic (file) { return /export\s.+\sgetStaticPaths/.test(fs.readFileSync(file, 'utf-8')) } -function getFiles ({ cwd, files }) { +function getFiles (config) { return [] - .concat(files) - .map(file => path.resolve(cwd, file)) // make absolute - .map(glob => matched.sync(glob, { cwd })) + .concat(config.merged.files) + .map(file => path.resolve(config.cwd, file)) // make absolute + .map(glob => matched.sync(glob, { cwd: config.cwd })) .flat() } diff --git a/lib/renderStaticEntries.js b/lib/renderStaticEntries.js index f8030844..343319e2 100644 --- a/lib/renderStaticEntries.js +++ b/lib/renderStaticEntries.js @@ -57,7 +57,7 @@ function renderStaticEntries (entries, config, options = {}) { allGeneratedFiles.push(filename) fs.outputFileSync( - path.join(config.output, OUTPUT_STATIC_DIR, filename), + path.join(config.merged.output, OUTPUT_STATIC_DIR, filename), response.body, 'utf-8' ) @@ -69,19 +69,21 @@ function renderStaticEntries (entries, config, options = {}) { description: url }) } - - y({ allGeneratedFiles }) } catch (e) { const location = entry.replace(config.cwd, '') onError(e, { location }) + n(e) + break } } // clear to prevent memory leak loadCache.clearAllMemory() + + y({ allGeneratedFiles }) }) } diff --git a/lib/serve.js b/lib/serve.js index 36148055..04b87568 100644 --- a/lib/serve.js +++ b/lib/serve.js @@ -42,8 +42,8 @@ function resolveHTML (dir, url) { async function serve (config, { noBanner }) { const port = await getPort({ port: 4000 }) const devClient = createDevClient({ port }) - const staticDir = path.join(config.output, 'static') - const assetDir = config.assets + const staticDir = path.join(config.merged.output, 'static') + const assetDir = config.merged.assets const server = http .createServer(async (req, res) => { @@ -125,10 +125,11 @@ async function serve (config, { noBanner }) { /* * No asset file, no static file, try dynamic */ - const { handler, files, config: userConfig } = require(path.join( - config.output, - OUTPUT_DYNAMIC_PAGES_ENTRY - )) + const { + handler, + files, + config: userConfig + } = require(config.dynamicEntryFilepath) const hasServerConfigured = !!files.length /** @@ -256,9 +257,11 @@ async function serve (config, { noBanner }) { socket.emit('refresh') }) - chokidar.watch(config.assets, { ignoreInitial: true }).on('all', () => { - events.emit('refresh') - }) + chokidar + .watch(config.merged.assets, { ignoreInitial: true }) + .on('all', () => { + events.emit('refresh') + }) return { port } } diff --git a/lib/watch.js b/lib/watch.js index 6ba40aed..4b3aebf5 100644 --- a/lib/watch.js +++ b/lib/watch.js @@ -11,7 +11,7 @@ const { getFiles, isStatic, isDynamic } = require('./getFiles') const { renderStaticEntries } = require('./renderStaticEntries') const events = require('./events') const { timer } = require('./timer') -const { merge, unmerge } = require('./config') +const { createConfig, removeConfigValues, getConfigFile } = require('./config') function getFileIds (config) { const files = getFiles(config) @@ -55,11 +55,7 @@ function updateDynamicEntry (ids, config) { async function watch (config, options = {}) { debug('watch initialized with config', config) - /* - * Either the config the user specified, or the default path in case they - * create a file - */ - const configFilepath = config.configFilepath || config.defaultConfigFilepath + let hasConfigFile = !!Object.keys(config.configFile).length /* * Get files that match static/dynamic patters at startup @@ -232,9 +228,9 @@ async function watch (config, options = {}) { configWatcher.on('remove', async files => { debug('configWatcher - config removed') - if (files[0] === configFilepath) { + if (files[0] === config.configFilepath) { // filter out values from the config file - config = unmerge(config) + config = removeConfigValues() handleConfigUpdate() } @@ -243,13 +239,12 @@ async function watch (config, options = {}) { debug('configWatcher - config changed') // clear config file for re-require - delete require.cache[configFilepath] + delete require.cache[config.configFilepath] try { // merge in new values from config file - config = merge(config, { - ...require(configFilepath), - configFilepath + config = createConfig({ + configFile: getConfigFile(config.configFilepath) }) handleConfigUpdate() @@ -272,7 +267,7 @@ async function watch (config, options = {}) { if (!/add|change/.test(event) || fs.lstatSync(file).isDirectory()) return // if a file change matches any pages globs - if (match(config.files)(file)) { + if (match(config.merged.files)(file)) { const isStat = isStatic(file) const isDyn = isDynamic(file) @@ -307,18 +302,19 @@ async function watch (config, options = {}) { } // if file matches config file and we don't already have one - if (file === configFilepath && !config.configFilepath) { + if (file === config.configFilepath && !hasConfigFile) { debug('globalWatcher - add config file') - configWatcher.add(configFilepath) + configWatcher.add(config.configFilepath) try { // merge in new values from config file - config = merge(config, { - ...require(configFilepath), - configFilepath + config = createConfig({ + configFile: getConfigFile(config.configFilepath) }) + hasConfigFile = true + handleConfigUpdate() } catch (e) { log(`\n ${c.red('error')}\n\n > ${e.stack || e}\n`) @@ -335,8 +331,8 @@ async function watch (config, options = {}) { /* * Watch config and tree if available */ - if (fs.existsSync(configFilepath)) { - configWatcher.add(configFilepath) + if (fs.existsSync(config.configFilepath)) { + configWatcher.add(config.configFilepath) } } diff --git a/test/config.test.js b/test/config.test.js index cffd24de..283f00d6 100644 --- a/test/config.test.js +++ b/test/config.test.js @@ -1,164 +1,180 @@ const path = require('path') const fixtures = require('./fixtures') -const { create, unmerge } = require('../lib/config') +const { + createConfig, + removeConfigValues, + getConfigFile, + clearCurrentConfig +} = require('../lib/config') + +const env = 'test' module.exports = async function (test, assert) { test('config - defaults', async () => { - const files = 'app/**/*.js' - const cli = { files } - const config = create(cli) + clearCurrentConfig() + + const config = createConfig({ + env, + cliArgs: { + files: 'app/*.js', + output: 'dist' + } + }) + + assert.equal(config.env, env) + assert(!!config.configFilepath) + assert(!!config.dynamicEntryFilepath) - assert(Array.isArray(config.cliArgs.files)) assert.deepEqual(config.configFile, {}) - assert(config.files[0].includes(files)) - assert(path.isAbsolute(config.output)) - assert(path.isAbsolute(config.assets)) - assert(path.isAbsolute(config.cwd)) - assert(config.configFilepath === undefined) - assert(config.dynamicEntryFilepath.includes(config.output)) + assert(path.isAbsolute(config.cliArgs.files[0])) + + assert(path.isAbsolute(config.merged.files[0])) + assert(path.isAbsolute(config.merged.output)) + assert(path.isAbsolute(config.merged.assets)) + + assert(config.merged.output.includes('dist')) + assert(config.dynamicEntryFilepath.includes('dist')) }) test('config - no files', async () => { - const cli = {} - const config = create(cli) + clearCurrentConfig() + + const config = createConfig({ + env, + cliArgs: {} + }) - assert.deepEqual(config.files, []) + assert.deepEqual(config.merged.files, []) }) test('config - output', async () => { - const files = 'app/**/*.js' - const output = 'dist' - const cli = { files, output } - const config = create(cli) + clearCurrentConfig() + + const config = createConfig({ + env, + cliArgs: { + files: 'app/*.js', + output: 'dist' + } + }) - assert(config.output.includes(output)) - assert(path.isAbsolute(config.output)) + assert(path.isAbsolute(config.merged.output)) + assert(config.merged.output.includes('dist')) }) test('config - assets', async () => { - const files = 'app/**/*.js' - const output = 'dist' - const assets = 'assets' - const cli = { files, output, assets } - const config = create(cli) - - assert(config.assets.includes(assets)) - assert(path.isAbsolute(config.assets)) - }) + clearCurrentConfig() - test('config - picks up default file if present', async () => { - const files = 'files/*.js' - const output = 'output' - const fsx = fixtures.create({ - config: { - url: 'presta.config.js', - content: `export const files = '${files}'; export const output = '${output}'` + const config = createConfig({ + env, + cliArgs: { + files: 'app/*.js', + assets: 'assets' } }) - const config = create({}) - - assert(path.isAbsolute(config.configFilepath)) - assert(config.files[0].includes(files)) - assert(config.output.includes(output)) - - fsx.cleanup() + assert(path.isAbsolute(config.merged.assets)) + assert(config.merged.assets.includes('assets')) }) - test('config - picks up custom file if present', async () => { - const files = 'files/*.js' + test('config - picks up default file if present', async () => { + clearCurrentConfig() + + const file = 'file.js' const output = 'output' const fsx = fixtures.create({ config: { - url: 'presta-config.js', - content: `export const files = '${files}'; export const output = '${output}'` + url: 'presta.config.js', + content: `export const files = '${file}'; export const output = '${output}'` } }) - - const config = create({ - config: fsx.files.config + const configFile = getConfigFile(fsx.files.config) + const config = createConfig({ + env, + configFile, + cliArgs: {} }) - assert(config.configFilepath.includes(fsx.files.config)) - assert(path.isAbsolute(config.configFilepath)) - assert(config.files[0].includes(files)) - assert(config.output.includes(output)) + assert(config.merged.files[0].includes(file)) + assert(config.merged.output.includes(output)) fsx.cleanup() }) test('config - overriden by CLI args', async () => { + clearCurrentConfig() + const fsx = fixtures.create({ config: { url: 'presta.config.js', - content: `export const files = './files/*.js'; export const output = './output'` + content: `export const files = 'file.js'; export const output = 'output'` } }) - - const config = create({ - files: 'foo', - output: 'dist' + const configFile = getConfigFile(fsx.files.config) + const config = createConfig({ + env, + configFile, + cliArgs: { + files: 'foo.js', + output: 'out' + } }) - assert(config.files.find(p => p.includes('foo'))) - assert(config.output.includes('dist')) - - // should merge files - assert(config.files.find(p => p.includes('files/*.js'))) + assert(config.merged.files[0].includes('foo.js')) + assert(config.merged.output.includes('out')) fsx.cleanup() }) test('config - file is merged with internal config', async () => { - const fsx = fixtures.create({ - config: { - url: 'presta.merged.config.js', - content: `export const output = './public'` - } - }) + clearCurrentConfig() - const config = create({ - files: 'foo', - config: fsx.files.config + const config = createConfig({ + configFile: { + output: 'out' + } }) - assert(config.output.includes('public')) - assert(config.dynamicEntryFilepath.includes(config.output)) - - fsx.cleanup() + assert(config.merged.output.includes('out')) + assert(config.dynamicEntryFilepath.includes('out')) }) - test.skip('config - unmerge', async () => { - const fsx = fixtures.create({ - config: { - url: 'presta.unmerged.config.js', - content: ` - export const files = 'foo' - export const output = 'output' - export function createContent(context) {} - ` + test('config - merging updates', async () => { + clearCurrentConfig() + + const config = createConfig({ + configFile: { + output: 'output' } }) - const curr = create({ - files: 'bar', - config: 'presta.unmerged.config.js' + assert(config.merged.output.includes('output')) + + const merged = createConfig({ + configFile: { + output: 'output', + assets: 'assets' + } }) - const prev = require(fsx.files.config) - assert(curr.files.length === 2) // merged - assert(curr.output.includes('output')) - assert(curr.dynamicEntryFilepath.includes(curr.output)) + assert(merged.merged.assets.includes('assets')) + }) - const unmerged = unmerge(curr) + test('config - removeConfigValues', async () => { + clearCurrentConfig() - assert(unmerged.files.length === 1) - assert(unmerged.files[0].includes('bar')) - assert(unmerged.output.includes('build')) - assert(unmerged.dynamicEntryFilepath.includes(unmerged.output)) + const config = createConfig({ + configFile: { + output: 'output' + } + }) - fsx.cleanup() + assert(config.merged.output.includes('output')) + + const unmerged = removeConfigValues() + + assert(unmerged.merged.output.includes('build')) }) } diff --git a/test/createDynamicEntry.test.js b/test/createDynamicEntry.test.js index 816af7e5..03b1d484 100644 --- a/test/createDynamicEntry.test.js +++ b/test/createDynamicEntry.test.js @@ -3,8 +3,8 @@ const path = require('path') const fixtures = require('./fixtures') +const { createConfig } = require('../lib/config') const { createDynamicEntry } = require('../lib/createDynamicEntry') -const { OUTPUT_DYNAMIC_PAGES_ENTRY } = require('../lib/constants') module.exports = (test, assert) => { test('createDynamicEntry', () => { @@ -18,20 +18,16 @@ module.exports = (test, assert) => { content: '' } }) - const config = { - files: './createDynamicEntry/*.js', - output: 'output', - dynamicEntryFilepath: path.join( - fixtures.getRoot(), - 'output', - OUTPUT_DYNAMIC_PAGES_ENTRY - ) - } + const config = createConfig({ + cliArgs: { + files: './createDynamicEntry/*.js', + output: path.join(fixtures.getRoot(), 'output') + } + }) const entry = createDynamicEntry([fsx.files.a, fsx.files.b], config) - assert(entry.includes(config.output)) - assert(entry.includes(OUTPUT_DYNAMIC_PAGES_ENTRY)) + assert(entry.includes(config.merged.output)) fsx.cleanup() }) diff --git a/test/getFiles.test.js b/test/getFiles.test.js index 31270e63..2c3384bb 100644 --- a/test/getFiles.test.js +++ b/test/getFiles.test.js @@ -69,7 +69,10 @@ module.exports = async function (test, assert) { const fsx = fixtures.create(files) - const results = getFiles({ cwd: process.cwd(), files: ['./getFiles/*.js'] }) + const results = getFiles({ + cwd: process.cwd(), + merged: { files: ['./getFiles/*.js'] } + }) assert(results.length === 3) fsx.cleanup() diff --git a/test/loadCache.test.js b/test/loadCache.test.js index 8b82abc2..5bf2b6ce 100644 --- a/test/loadCache.test.js +++ b/test/loadCache.test.js @@ -18,7 +18,7 @@ module.exports = async (test, assert) => { cache.set('foo', 'bar', 1000) - await wait(1000) + await wait(1100) assert(undefined === cache.get('foo'))