feat: support defineUserConfig (#53)

* feat: support config file

* feat: config file

* feat: add config watch

* fix: createServer path

* feat: add json support

* chore: space

* fix: add browserlist and webpack bundle analyze

* fix: update package name
This commit is contained in:
ClarkXia 2022-03-31 15:12:33 +08:00
parent 3a579259e4
commit 43a143de6d
21 changed files with 282 additions and 152 deletions

View File

@ -0,0 +1 @@
chrome 55

View File

@ -1,5 +0,0 @@
{
"alias": {
"$$": "./.ice"
}
}

View File

@ -0,0 +1,12 @@
import { defineUserConfig } from '@ice/cli';
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';
export default defineUserConfig({
publicPath: '/',
webpack: (webpackConfig) => {
if (process.env.NODE_ENV !== 'test') {
webpackConfig.plugins?.push(new BundleAnalyzerPlugin());
}
return webpackConfig;
},
});

View File

@ -18,6 +18,7 @@
"@types/react": "^17.0.39",
"@types/react-dom": "^17.0.11",
"browserslist": "^4.19.3",
"regenerator-runtime": "^0.13.9"
"regenerator-runtime": "^0.13.9",
"webpack-bundle-analyzer": "^4.5.0"
}
}

View File

@ -27,6 +27,6 @@
"ice": [".ice"]
}
},
"include": ["src", ".ice"],
"include": ["src", ".ice", "ice.config.*"],
"exclude": ["node_modules", "build", "public"]
}

View File

@ -15,6 +15,7 @@
"lint:diff": "esmo ./scripts/lintDiff.ts",
"lint": "eslint --cache --ext .js,.jsx,.ts,.tsx ./",
"lint:fix": "npm run lint -- --fix",
"publish:alpha": "PUBLISH_TYPE=alpha esmo ./scripts/publishPackageWithDistTag.ts",
"test": "NODE_OPTIONS=--experimental-vm-modules jest --forceExit --config ./jest.config.mjs",
"test:ci": "npm run test -- --ci",
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --config ./jest.config.mjs"
@ -33,7 +34,7 @@
"@types/jest": "^27.4.0",
"@types/node": "^17.0.13",
"@types/semver": "^7.3.9",
"build-scripts": "^2.0.0-9",
"build-scripts": "^2.0.0-14",
"chalk": "^4.1.2",
"chokidar": "^3.5.3",
"dependency-check": "^4.1.0",

View File

@ -1,4 +1,4 @@
# @builder/webpack-config
# @ice/webpack-config
This package providers basic webpack configuration.
@ -6,7 +6,7 @@ This package providers basic webpack configuration.
## Usage
```js
import { getWebpackConfig } from '@builder/webpack-config';
import { getWebpackConfig } from '@ice/webpack-config';
const config = { alias: {} };
const rootDir = process.cwd();
const webpackConfig = getWebpackConfig({ rootDir, config });

View File

@ -1,6 +1,6 @@
{
"name": "@builder/webpack-config",
"version": "3.0.0",
"name": "@ice/webpack-config",
"version": "1.0.0",
"repository": "ice-lab/ice-next",
"bugs": "https://github.com/ice-lab/ice-next/issues",
"homepage": "https://next.ice.work",
@ -32,7 +32,7 @@
},
"devDependencies": {
"@ice/types": "^1.0.0",
"build-scripts": "^2.0.0-7",
"build-scripts": "^2.0.0-14",
"webpack": "^5.69.1",
"webpack-dev-server": "^4.7.4"
}

View File

@ -4,9 +4,9 @@ import path from 'path';
import { fileURLToPath } from 'url';
import { program } from 'commander';
import parse from 'yargs-parser';
import checkNodeVersion from './checkNodeVersion.mjs';
import getBuiltInPlugins from '../esm/getBuiltInPlugins.js';
import createService from '../esm/index.js';
import createService from '../esm/createService.js';
import checkNodeVersion from './checkNodeVersion.mjs';
const __dirname = path.dirname(fileURLToPath(import.meta.url));

View File

@ -20,13 +20,13 @@
"homepage": "https://next.ice.work",
"dependencies": {
"@builder/pack": "^0.6.0",
"@builder/webpack-config": "^3.0.0",
"@ice/webpack-config": "^1.0.0",
"@ice/plugin-app": "^1.0.0",
"@ice/plugin-auth": "^1.0.0",
"@ice/route-manifest": "^1.0.0",
"@ice/runtime": "^1.0.0",
"address": "^1.1.2",
"build-scripts": "^2.0.0-7",
"build-scripts": "^2.0.0-14",
"chalk": "^4.0.0",
"commander": "^9.0.0",
"consola": "^2.15.3",

View File

@ -0,0 +1,118 @@
import * as path from 'path';
import { fileURLToPath } from 'url';
import { Context } from 'build-scripts';
import consola from 'consola';
import type { CommandArgs, CommandName, IGetBuiltInPlugins } from 'build-scripts';
import type { ExportData } from '@ice/types/esm/generator.js';
import type { ExtendsPluginAPI } from '@ice/types/esm/plugin.js';
import Generator from './service/runtimeGenerator.js';
import { createEsbuildCompiler } from './service/compile.js';
import createWatch from './service/watchSource.js';
import start from './commands/start.js';
import build from './commands/build.js';
import getContextConfig from './utils/getContextConfig.js';
import getWatchEvents from './getWatchEvents.js';
import { getAppConfig } from './analyzeRuntime.js';
import { defineRuntimeEnv, updateRuntimeEnv } from './utils/runtimeEnv.js';
import { generateRoutesInfo } from './routes.js';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
interface CreateServiceOptions {
rootDir: string;
command: CommandName;
commandArgs: CommandArgs;
getBuiltInPlugins: IGetBuiltInPlugins;
}
async function createService({ rootDir, command, commandArgs, getBuiltInPlugins }: CreateServiceOptions) {
const targetDir = '.ice';
const templateDir = path.join(__dirname, '../template/');
const configFile = 'ice.config.(mts|mjs|ts|js|cjs|json)';
const dataCache = new Map<string, string>();
const routesRenderData = generateRoutesInfo(rootDir);
dataCache.set('routes', JSON.stringify(routesRenderData));
const generator = new Generator({
rootDir,
targetDir,
defaultRenderData: {
...routesRenderData,
},
// add default template of ice
templates: [templateDir],
});
const { addWatchEvent, removeWatchEvent } = createWatch({
watchDir: rootDir,
command,
watchEvents: getWatchEvents({
generator,
rootDir,
targetDir,
templateDir,
configFile,
cache: dataCache,
}),
});
const generatorAPI = {
addExport: (exportData: ExportData) => {
generator.addExport('framework', exportData);
},
addExportTypes: (exportData: ExportData) => {
generator.addExport('frameworkTypes', exportData);
},
addConfigTypes: (exportData: ExportData) => {
generator.addExport('configTypes', exportData);
},
addRenderFile: generator.addRenderFile,
addRenderTemplate: generator.addTemplateFiles,
};
const ctx = new Context<any, ExtendsPluginAPI>({
rootDir,
command,
commandArgs,
configFile,
extendsPluginAPI: {
generator: generatorAPI,
watch: {
addEvent: addWatchEvent,
removeEvent: removeWatchEvent,
},
context: {},
},
getBuiltInPlugins,
});
await ctx.resolveConfig();
generator.setPlugins(ctx.getAllPlugin());
await ctx.setup();
// render template before webpack compile
const renderStart = new Date().getTime();
generator.render();
consola.debug('template render cost:', new Date().getTime() - renderStart);
// define runtime env before get webpack config
defineRuntimeEnv();
const contextConfig = getContextConfig(ctx);
const webTask = contextConfig.find(({ name }) => name === 'web');
const esbuildCompile = createEsbuildCompiler({
alias: webTask.webpackConfig.resolve.alias as Record<string, string>,
getTransformPlugins: webTask.getTransformPlugins,
});
return {
run: async () => {
if (command === 'start') {
return await start(ctx, contextConfig, esbuildCompile);
} else if (command === 'build') {
const appConfig = await getAppConfig({ esbuildCompile, rootDir });
updateRuntimeEnv(appConfig, routesRenderData.routeManifest);
return await build(ctx, contextConfig, esbuildCompile);
}
},
};
}
export default createService;

View File

@ -8,12 +8,13 @@ interface Options {
rootDir: string;
targetDir: string;
templateDir: string;
configFile: string;
generator: Generator;
cache: Map<string, string>;
}
const getWatchEvents = (options: Options): WatchEvent[] => {
const { rootDir, generator, targetDir, templateDir, cache } = options;
const { rootDir, generator, targetDir, templateDir, configFile, cache } = options;
const watchRoutes: WatchEvent = [
/src\/pages\/?[\w*-:.$]+$/,
(eventName: string) => {
@ -47,7 +48,16 @@ const getWatchEvents = (options: Options): WatchEvent[] => {
},
];
return [watchRoutes, watchGlobalStyle];
const watchConfigFile: WatchEvent = [
new RegExp(configFile),
(event: string, filePath: string) => {
if (event === 'change') {
consola.warn(`Found a change in ${path.basename(filePath)}. Restart the dev server to see the changes in effect.`);
}
},
];
return [watchConfigFile, watchRoutes, watchGlobalStyle];
};
export default getWatchEvents;

View File

@ -1,116 +1,7 @@
import * as path from 'path';
import { fileURLToPath } from 'url';
import { Context } from 'build-scripts';
import consola from 'consola';
import type { CommandArgs, CommandName, IGetBuiltInPlugins } from 'build-scripts';
import type { ExportData } from '@ice/types/esm/generator.js';
import type { ExtendsPluginAPI } from '@ice/types/esm/plugin.js';
import Generator from './service/runtimeGenerator.js';
import { createEsbuildCompiler } from './service/compile.js';
import createWatch from './service/watchSource.js';
import start from './commands/start.js';
import build from './commands/build.js';
import getContextConfig from './utils/getContextConfig.js';
import getWatchEvents from './getWatchEvents.js';
import { getAppConfig } from './analyzeRuntime.js';
import { defineRuntimeEnv, updateRuntimeEnv } from './utils/runtimeEnv.js';
import { generateRoutesInfo } from './routes.js';
import type { UserConfig } from '@ice/types';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
interface CreateServiceOptions {
rootDir: string;
command: CommandName;
commandArgs: CommandArgs;
getBuiltInPlugins: IGetBuiltInPlugins;
export function defineUserConfig(userConfig: UserConfig) {
return userConfig;
}
async function createService({ rootDir, command, commandArgs, getBuiltInPlugins }: CreateServiceOptions) {
const srcDir = path.join(rootDir, 'src');
const targetDir = '.ice';
const templateDir = path.join(__dirname, '../template/');
const dataCache = new Map<string, string>();
const routesRenderData = generateRoutesInfo(rootDir);
dataCache.set('routes', JSON.stringify(routesRenderData));
const generator = new Generator({
rootDir,
targetDir,
defaultRenderData: {
...routesRenderData,
},
// add default template of ice
templates: [templateDir],
});
const { addWatchEvent, removeWatchEvent } = createWatch({
watchDir: srcDir,
command,
watchEvents: getWatchEvents({
generator,
rootDir,
targetDir,
templateDir,
cache: dataCache,
}),
});
const generatorAPI = {
addExport: (exportData: ExportData) => {
generator.addExport('framework', exportData);
},
addExportTypes: (exportData: ExportData) => {
generator.addExport('frameworkTypes', exportData);
},
addConfigTypes: (exportData: ExportData) => {
generator.addExport('configTypes', exportData);
},
addRenderFile: generator.addRenderFile,
addRenderTemplate: generator.addTemplateFiles,
};
const ctx = new Context<any, ExtendsPluginAPI>({
rootDir,
command,
commandArgs,
extendsPluginAPI: {
generator: generatorAPI,
watch: {
addEvent: addWatchEvent,
removeEvent: removeWatchEvent,
},
context: {},
},
getBuiltInPlugins,
});
await ctx.resolveConfig();
generator.setPlugins(ctx.getAllPlugin());
await ctx.setup();
// render template before webpack compile
const renderStart = new Date().getTime();
generator.render();
consola.debug('template render cost:', new Date().getTime() - renderStart);
// define runtime env before get webpack config
defineRuntimeEnv();
const contextConfig = getContextConfig(ctx);
const webTask = contextConfig.find(({ name }) => name === 'web');
const esbuildCompile = createEsbuildCompiler({
alias: webTask.webpackConfig.resolve.alias as Record<string, string>,
getTransformPlugins: webTask.getTransformPlugins,
});
return {
run: async () => {
if (command === 'start') {
return await start(ctx, contextConfig, esbuildCompile);
} else if (command === 'build') {
const appConfig = await getAppConfig({ esbuildCompile, rootDir });
updateRuntimeEnv(appConfig, routesRenderData.routeManifest);
return await build(ctx, contextConfig, esbuildCompile);
}
},
};
}
export default createService;
export type { UserConfig };

View File

@ -14,6 +14,7 @@ function createWatch(options: {
// do not setup chokidar when run build
const watcher = command === 'start' && chokidar.watch(watchDir, {
ignoreInitial: true,
ignored: [/node_modules/],
...(watchOptions || {}),
}).on('all', (event, filePath) => {
watchEvents.forEach(([pattern, action]) => {

View File

@ -5,7 +5,7 @@ import type { Config } from '@ice/types';
import type { Configuration } from 'webpack';
import type { Configuration as DevServerConfiguration } from 'webpack-dev-server';
import type { UnpluginOptions } from 'unplugin';
import { getWebpackConfig, getTransformPlugins as getBuiltInPlugins } from '@builder/webpack-config';
import { getWebpackConfig, getTransformPlugins as getBuiltInPlugins } from '@ice/webpack-config';
import { builtInPlugins } from '../constant.js';
export interface ContextConfig {

View File

@ -26,7 +26,7 @@
"bugs": "https://github.com/ice-lab/ice-next/issues",
"homepage": "https://next.ice.work",
"devDependencies": {
"build-scripts": "^2.0.0-9",
"build-scripts": "^2.0.0-14",
"esbuild": "^0.14.23",
"@ice/runtime": "^1.0.0",
"@ice/route-manifest": "^1.0.0",

View File

@ -1,9 +1,11 @@
import type { Config } from './config.js';
import type { Plugin } from './plugin.js';
import type { UserConfig } from './userConfig.js';
export {
Config,
Plugin,
UserConfig,
};
export * from './runtime.js';

View File

@ -0,0 +1,14 @@
import type { Config, ModifyWebpackConfig } from './config';
export interface UserConfig {
alias?: Record<string, string | false>;
define?: Record<string, string | boolean>;
devPublicPath?: string;
publicPath?: string;
hash?: boolean | string;
externals?: Config['externals'];
outputDir?: string;
proxy?: Config['proxy'];
filename?: string;
webpack?: ModifyWebpackConfig;
}

View File

@ -12,7 +12,7 @@ importers:
'@types/jest': ^27.4.0
'@types/node': ^17.0.13
'@types/semver': ^7.3.9
build-scripts: ^2.0.0-9
build-scripts: ^2.0.0-14
chalk: ^4.1.2
chokidar: ^3.5.3
dependency-check: ^4.1.0
@ -44,7 +44,7 @@ importers:
'@types/jest': 27.4.0
'@types/node': 17.0.19
'@types/semver': 7.3.9
build-scripts: 2.0.0-9
build-scripts: 2.0.0-14
chalk: 4.1.2
chokidar: 3.5.3
dependency-check: 4.1.0
@ -78,6 +78,7 @@ importers:
react: ^17.0.2
react-dom: ^17.0.2
regenerator-runtime: ^0.13.9
webpack-bundle-analyzer: ^4.5.0
dependencies:
'@ice/cli': link:../../packages/ice
'@ice/runtime': link:../../packages/runtime
@ -89,6 +90,7 @@ importers:
'@types/react-dom': 17.0.11
browserslist: 4.19.3
regenerator-runtime: 0.13.9
webpack-bundle-analyzer: 4.5.0
packages/build-webpack-config:
specifiers:
@ -99,7 +101,7 @@ importers:
'@rollup/pluginutils': ^4.2.0
'@swc/core': ^1.2.146
browserslist: ^4.19.3
build-scripts: ^2.0.0-7
build-scripts: ^2.0.0-14
consola: ^2.15.3
es-module-lexer: ^0.10.0
event: ^1.0.0
@ -133,23 +135,23 @@ importers:
unplugin: 0.3.2_webpack@5.69.1
devDependencies:
'@ice/types': link:../types
build-scripts: 2.0.0-9
build-scripts: 2.0.0-14
webpack: 5.69.1_@swc+core@1.2.146
webpack-dev-server: 4.7.4_webpack@5.69.1
packages/ice:
specifiers:
'@builder/pack': ^0.6.0
'@builder/webpack-config': ^3.0.0
'@ice/plugin-app': ^1.0.0
'@ice/plugin-auth': ^1.0.0
'@ice/route-manifest': ^1.0.0
'@ice/runtime': ^1.0.0
'@ice/types': ^1.0.0
'@ice/webpack-config': ^1.0.0
'@types/ejs': ^3.1.0
'@types/lodash.debounce': ^4.0.6
address: ^1.1.2
build-scripts: ^2.0.0-7
build-scripts: ^2.0.0-14
chalk: ^4.0.0
chokidar: ^3.5.3
commander: ^9.0.0
@ -168,13 +170,13 @@ importers:
yargs-parser: ^21.0.0
dependencies:
'@builder/pack': 0.6.0
'@builder/webpack-config': link:../build-webpack-config
'@ice/plugin-app': link:../plugin-app
'@ice/plugin-auth': link:../plugin-auth
'@ice/route-manifest': link:../route-manifest
'@ice/runtime': link:../runtime
'@ice/webpack-config': link:../build-webpack-config
address: 1.1.2
build-scripts: 2.0.0-9
build-scripts: 2.0.0-14
chalk: 4.1.2
commander: 9.0.0
consola: 2.15.3
@ -252,7 +254,7 @@ importers:
specifiers:
'@ice/route-manifest': ^1.0.0
'@ice/runtime': ^1.0.0
build-scripts: ^2.0.0-9
build-scripts: ^2.0.0-14
esbuild: ^0.14.23
react: ^17.0.2
unplugin: ^0.3.2
@ -261,7 +263,7 @@ importers:
devDependencies:
'@ice/route-manifest': link:../route-manifest
'@ice/runtime': link:../runtime
build-scripts: 2.0.0-9
build-scripts: 2.0.0-14
esbuild: 0.14.23
react: 17.0.2
unplugin: 0.3.2_esbuild@0.14.23+webpack@5.69.1
@ -381,6 +383,7 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/highlight': 7.16.10
dev: true
/@babel/compat-data/7.17.0:
resolution: {integrity: sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==}
@ -528,6 +531,7 @@ packages:
/@babel/helper-validator-identifier/7.16.7:
resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-validator-option/7.16.7:
resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
@ -552,6 +556,7 @@ packages:
'@babel/helper-validator-identifier': 7.16.7
chalk: 2.4.2
js-tokens: 4.0.0
dev: true
/@babel/parser/7.17.3:
resolution: {integrity: sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==}
@ -1091,6 +1096,7 @@ packages:
jest-message-util: 27.5.1
jest-util: 27.5.1
slash: 3.0.0
dev: true
/@jest/core/27.5.1:
resolution: {integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==}
@ -1223,6 +1229,7 @@ packages:
'@jest/types': 27.5.1
'@types/istanbul-lib-coverage': 2.0.4
collect-v8-coverage: 1.0.1
dev: true
/@jest/test-sequencer/27.5.1:
resolution: {integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==}
@ -1268,6 +1275,7 @@ packages:
'@types/node': 17.0.19
'@types/yargs': 16.0.4
chalk: 4.1.2
dev: true
/@jridgewell/resolve-uri/3.0.5:
resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==}
@ -1347,6 +1355,10 @@ packages:
webpack-dev-server: 4.7.4_webpack@5.69.1
dev: false
/@polka/url/1.0.0-next.21:
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
dev: true
/@rollup/pluginutils/4.2.0:
resolution: {integrity: sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==}
engines: {node: '>= 8.0.0'}
@ -1648,16 +1660,19 @@ packages:
/@types/istanbul-lib-coverage/2.0.4:
resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
dev: true
/@types/istanbul-lib-report/3.0.0:
resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
dependencies:
'@types/istanbul-lib-coverage': 2.0.4
dev: true
/@types/istanbul-reports/3.0.1:
resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
dependencies:
'@types/istanbul-lib-report': 3.0.0
dev: true
/@types/jest/27.4.0:
resolution: {integrity: sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==}
@ -1762,6 +1777,7 @@ packages:
/@types/stack-utils/2.0.1:
resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
dev: true
/@types/ws/8.2.3:
resolution: {integrity: sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ==}
@ -1770,11 +1786,13 @@ packages:
/@types/yargs-parser/20.2.1:
resolution: {integrity: sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==}
dev: true
/@types/yargs/16.0.4:
resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==}
dependencies:
'@types/yargs-parser': 20.2.1
dev: true
/@types/yauzl/2.9.2:
resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==}
@ -2182,6 +2200,7 @@ packages:
/ansi-styles/5.2.0:
resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
engines: {node: '>=10'}
dev: true
/anymatch/3.1.2:
resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
@ -2499,12 +2518,10 @@ packages:
ieee754: 1.2.1
dev: true
/build-scripts/2.0.0-9:
resolution: {integrity: sha512-pF9vj2dvu1hnyLYjPeTVNouysHkGZnCwzigAOcC+s2Gamwb7dJeAswd5aeJG26R9zOk/jUkdj2ndSp4BPEqQkg==}
/build-scripts/2.0.0-14:
resolution: {integrity: sha512-cs7k687sMGGGOaXTGnKyetuaXiqXt+Opdlws4YOz8XXE5m3YqxdWe7VJi0d8sOOQwD1tb4q/s5I7DsoDzT5qxw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
'@jest/test-result': 27.5.1
'@jest/types': 27.5.1
camelcase: 5.3.1
commander: 2.20.3
consola: 2.15.3
@ -2628,6 +2645,7 @@ packages:
/ci-info/3.3.0:
resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==}
dev: true
/cjs-module-lexer/1.2.2:
resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==}
@ -2663,6 +2681,7 @@ packages:
/collect-v8-coverage/1.0.1:
resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==}
dev: true
/color-convert/1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
@ -2698,6 +2717,11 @@ packages:
/commander/2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
/commander/7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
dev: true
/commander/9.0.0:
resolution: {integrity: sha512-JJfP2saEKbQqvW+FI93OYUB4ByV5cizMpFMiiJI8xDbBvQvSkIk0VvQdn1CZ8mqAO8Loq2h0gYTYtDFUZUeERw==}
engines: {node: ^12.20.0 || >=14}
@ -3114,6 +3138,10 @@ packages:
is-obj: 2.0.0
dev: true
/duplexer/0.1.2:
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
dev: true
/ee-first/1.1.1:
resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=}
@ -3431,6 +3459,7 @@ packages:
/escape-string-regexp/2.0.0:
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
engines: {node: '>=8'}
dev: true
/escape-string-regexp/4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
@ -4210,6 +4239,13 @@ packages:
/graceful-fs/4.2.9:
resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==}
/gzip-size/6.0.0:
resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==}
engines: {node: '>=10'}
dependencies:
duplexer: 0.1.2
dev: true
/handle-thing/2.0.1:
resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
@ -5021,6 +5057,7 @@ packages:
pretty-format: 27.5.1
slash: 3.0.0
stack-utils: 2.0.5
dev: true
/jest-mock/27.5.1:
resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==}
@ -5184,6 +5221,7 @@ packages:
ci-info: 3.3.0
graceful-fs: 4.2.9
picomatch: 2.3.1
dev: true
/jest-validate/27.5.1:
resolution: {integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==}
@ -5734,6 +5772,11 @@ packages:
hasBin: true
dev: true
/mrmime/1.0.0:
resolution: {integrity: sha512-a70zx7zFfVO7XpnQ2IX1Myh9yY4UYvfld/dikWRnsXxbyvMcfz+u6UfgNAtH+k2QqtJuzVpv6eLTx1G2+WKZbQ==}
engines: {node: '>=10'}
dev: true
/ms/2.0.0:
resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=}
@ -5967,6 +6010,11 @@ packages:
is-docker: 2.2.1
is-wsl: 2.2.0
/opener/1.5.2:
resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
hasBin: true
dev: true
/optionator/0.8.3:
resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
engines: {node: '>= 0.8.0'}
@ -6256,6 +6304,7 @@ packages:
ansi-regex: 5.0.1
ansi-styles: 5.2.0
react-is: 17.0.2
dev: true
/process-nextick-args/2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
@ -6392,6 +6441,7 @@ packages:
/react-is/17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
dev: true
/react-refresh/0.11.0:
resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==}
@ -6752,6 +6802,15 @@ packages:
/signal-exit/3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
/sirv/1.0.19:
resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==}
engines: {node: '>= 10'}
dependencies:
'@polka/url': 1.0.0-next.21
mrmime: 1.0.0
totalist: 1.1.0
dev: true
/sisteransi/1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
dev: true
@ -6885,6 +6944,7 @@ packages:
engines: {node: '>=10'}
dependencies:
escape-string-regexp: 2.0.0
dev: true
/stackframe/1.2.1:
resolution: {integrity: sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==}
@ -7278,6 +7338,11 @@ packages:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
engines: {node: '>=0.6'}
/totalist/1.1.0:
resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==}
engines: {node: '>=6'}
dev: true
/tough-cookie/4.0.0:
resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==}
engines: {node: '>=6'}
@ -7665,6 +7730,25 @@ packages:
engines: {node: '>=10.4'}
dev: true
/webpack-bundle-analyzer/4.5.0:
resolution: {integrity: sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==}
engines: {node: '>= 10.13.0'}
hasBin: true
dependencies:
acorn: 8.7.0
acorn-walk: 8.2.0
chalk: 4.1.2
commander: 7.2.0
gzip-size: 6.0.0
lodash: 4.17.21
opener: 1.5.2
sirv: 1.0.19
ws: 7.5.7
transitivePeerDependencies:
- bufferutil
- utf-8-validate
dev: true
/webpack-dev-middleware/5.3.1_webpack@5.69.1:
resolution: {integrity: sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==}
engines: {node: '>= 12.13.0'}
@ -7676,7 +7760,7 @@ packages:
mime-types: 2.1.34
range-parser: 1.2.1
schema-utils: 4.0.0
webpack: 5.69.1_@swc+core@1.2.146
webpack: 5.69.1_esbuild@0.14.23
/webpack-dev-server/4.7.4_webpack@5.69.1:
resolution: {integrity: sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==}
@ -7717,7 +7801,7 @@ packages:
sockjs: 0.3.24
spdy: 4.0.2
strip-ansi: 7.0.1
webpack: 5.69.1_@swc+core@1.2.146
webpack: 5.69.1_esbuild@0.14.23
webpack-dev-middleware: 5.3.1_webpack@5.69.1
ws: 8.5.0
transitivePeerDependencies:

View File

@ -3,7 +3,7 @@ import process from 'process';
import getPort from 'get-port';
import Browser, { Page } from './browser';
import getBuiltInPlugins from '../../packages/ice/src/getBuiltInPlugins';
import createService from '../../packages/ice/src';
import createService from '../../packages/ice/src/createService';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));

View File

@ -3,7 +3,7 @@ import getPort from 'get-port';
import Browser, { Page } from './browser';
import { Server } from 'http';
import getBuiltInPlugins from '../../packages/ice/src/getBuiltInPlugins';
import createService from '../../packages/ice/src';
import createService from '../../packages/ice/src/createService';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));