ice/tests/utils/build.ts

53 lines
1.5 KiB
TypeScript
Raw Normal View History

import path from 'path';
import { fileURLToPath } from 'url';
import getPort from 'get-port';
import createService from '../../packages/ice/src/createService';
import type { Page } from './browser';
import Browser from './browser';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
2022-01-27 14:32:38 +08:00
2022-11-15 10:37:30 +08:00
interface SetupBrowser {
2022-01-27 14:32:38 +08:00
(options: {
example: string;
outputDir?: string;
defaultHtml?: string;
disableJS?: boolean;
}): Promise<ReturnValue>;
2022-01-27 14:32:38 +08:00
}
2022-11-15 10:37:30 +08:00
interface ReturnValue {
page: Page;
2022-01-27 14:32:38 +08:00
browser: Browser;
}
// get builtIn plugins
export const buildFixture = async function (example: string, commandArgs?: Record<string, string | boolean>) {
const rootDir = path.join(__dirname, `../../examples/${example}`);
Feat/define data loader (#643) * feat: modify dataLoader * feat: add type * feat: add DataLoaderConfig * feat: modify getData to defineDataLoader * chore: remove defineDataLoader * fix: fetcher shoule return promise * fix: loader may be undefined * fix: err loader config * chore: modify example of pha * feat: modify getData * chore: modify type and mofiy options of init * feat: modify fetcher to dataLoaderFetcher and add dataLoaderImport to entry * chore: modify defaultDataLoaderFetcher * chore: load data by route id * feat: modify serverDataLoader and staticDataLoader * feat: add fetcher when route change * fix: deal with window undefined * chore: modify type * feat: try get data from cache * feat: support useData * feat: add defineStaticDataLoader and defineServerDataLoader * chore: modify getData of example * fix: should load data * fix: fix ssg err * fix: fix dataloader for ssg * test: modify env of test * fix: shoule clear cache when route changed * fix: fix renderMode and add defult remder mode * fix: add window * test: add jsdom * test: modify getData to dataLoader * test: modify test of clientApp * test: clear window after each test * test: remove only * test: remove only * chore: modify appear * fix: Try get data from cache when CSR * chore: update lock * chore: remove unused * refactor: data loader (#685) * refactor: set global fetcher * refactor: set global fetcher * fix: should not build react in data loader * fix: test * test: modify test Co-authored-by: 水澜 <shuilan.cj@taobao.com> Co-authored-by: ZeroLing <i@zeroling.com>
2022-11-14 15:59:22 +08:00
// process.env.DISABLE_FS_CACHE = 'true';
const service = await createService({
rootDir,
command: 'build',
commandArgs: {
...(commandArgs || {}),
},
});
await service.run();
};
2022-01-27 14:32:38 +08:00
export const setupBrowser: SetupBrowser = async (options) => {
const { example, outputDir = 'build', defaultHtml = 'index.html', disableJS = true } = options;
2022-01-27 14:32:38 +08:00
const rootDir = path.join(__dirname, `../../examples/${example}`);
const port = await getPort();
const browser = new Browser({ cwd: path.join(rootDir, outputDir), port });
await browser.start();
console.log();
// When preview html generate by build, the path will not match the router info,
// so hydrate will not found the route component.
const page = await browser.page(`http://127.0.0.1:${port}`, `/${defaultHtml}`, disableJS);
2022-01-27 14:32:38 +08:00
return {
browser,
page,
};
};