From 5bb6d14f1b889482ed3dd7fb0344f12292fa8f79 Mon Sep 17 00:00:00 2001 From: otakustay Date: Sat, 15 Jan 2022 14:22:07 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20settings=E5=8C=85=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E8=87=B3ESM=20(#39)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/config-jest/package.json | 3 ++- packages/config-jest/src/interface.ts | 5 +++-- packages/config-jest/src/preset.ts | 2 +- packages/init/package.json | 1 - packages/init/src/run/install.ts | 3 +-- packages/settings/package.json | 11 +++++----- .../settings/src/__tests__/plugins.test.ts | 14 +++++++------ .../settings/src/__tests__/validate.test.ts | 3 ++- packages/settings/src/defaults.ts | 2 +- packages/settings/src/index.ts | 11 +++++----- packages/settings/src/plugins.ts | 2 +- pnpm-lock.yaml | 20 ++++++++----------- 12 files changed, 38 insertions(+), 39 deletions(-) diff --git a/packages/config-jest/package.json b/packages/config-jest/package.json index f54fa429..58ce3387 100644 --- a/packages/config-jest/package.json +++ b/packages/config-jest/package.json @@ -2,6 +2,7 @@ "name": "@reskript/config-jest", "version": "3.0.2", "license": "MIT", + "type": "commonjs", "main": "./dist/index.js", "types": "./dist/index.d.ts", "engines": { @@ -44,7 +45,7 @@ "enzyme-to-json": "^3.6.2", "identity-obj-proxy": "^3.0.0", "jest-raw-loader": "^1.0.1", - "lodash": "^4.17.21", + "ramda": "^0.27.1", "resolve": "^1.20.0", "unixify": "^1.0.0" }, diff --git a/packages/config-jest/src/interface.ts b/packages/config-jest/src/interface.ts index c28a7146..bb3da8ea 100644 --- a/packages/config-jest/src/interface.ts +++ b/packages/config-jest/src/interface.ts @@ -1,5 +1,6 @@ -import {ProjectAware} from '@reskript/core'; -import {FeatureMatrix} from '@reskript/settings'; +import type {ProjectAware} from '@reskript/core'; +// @ts-expect-error +import type {FeatureMatrix} from '@reskript/settings'; export type TestTarget = 'react' | 'node'; diff --git a/packages/config-jest/src/preset.ts b/packages/config-jest/src/preset.ts index 6b07e7dd..a566ebaa 100644 --- a/packages/config-jest/src/preset.ts +++ b/packages/config-jest/src/preset.ts @@ -1,4 +1,4 @@ -import {merge} from 'lodash'; +import {merge} from 'ramda'; import resolve from 'resolve'; import unixify from 'unixify'; import {JestConfigOptions} from './interface'; diff --git a/packages/init/package.json b/packages/init/package.json index f3b12788..32c93fd8 100644 --- a/packages/init/package.json +++ b/packages/init/package.json @@ -35,7 +35,6 @@ "execa": "^6.0.0", "globby": "^12.0.2", "inquirer": "^8.2.0", - "lodash": "^4.17.21", "ora": "^6.0.1", "pad-stream": "^3.0.0" } diff --git a/packages/init/src/run/install.ts b/packages/init/src/run/install.ts index bbf6b644..49c68978 100644 --- a/packages/init/src/run/install.ts +++ b/packages/init/src/run/install.ts @@ -1,8 +1,7 @@ -import {compact} from 'lodash'; import ora from 'ora'; import {execa} from 'execa'; import padStream from 'pad-stream'; -import {isInDebugMode} from '@reskript/core'; +import {isInDebugMode, compact} from '@reskript/core'; import {UserOptions} from '../interface.js'; const PACKAGE_MANAGER_INSTALL_COMMAND: Record = { diff --git a/packages/settings/package.json b/packages/settings/package.json index 6c2ba1f9..d06eb408 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -2,7 +2,7 @@ "name": "@reskript/settings", "version": "3.0.2", "license": "MIT", - "type": "commonjs", + "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { @@ -21,23 +21,22 @@ "clean": "rm -rf dist", "build": "tsc -p tsconfig.build.json", "lint": "eslint --max-warnings=0 src", - "test": "jest" + "test": "vitest run" }, "devDependencies": { "@types/babel__core": "^7.1.17", - "@types/jest": "^27.0.3", "@types/node": "^17.0.4", + "c8": "^7.10.0", "eslint": "^8.6.0", - "jest": "^27.4.5", - "ts-jest": "^27.1.2", "typescript": "4.6.0-dev.20220105", + "vite": "^2.7.7", + "vitest": "^0.0.115", "webpack": "^5.65.0" }, "dependencies": { "@reskript/core": "3.0.2", "chokidar": "^3.5.2", "hasha": "^5.2.0", - "lodash": "^4.17.21", "schema-utils": "^4.0.0", "webpack-dev-server": "^4.7.1" } diff --git a/packages/settings/src/__tests__/plugins.test.ts b/packages/settings/src/__tests__/plugins.test.ts index 11f1c177..2487d284 100644 --- a/packages/settings/src/__tests__/plugins.test.ts +++ b/packages/settings/src/__tests__/plugins.test.ts @@ -1,12 +1,12 @@ +import {test, expect, vi} from 'vitest'; import {ProjectAware} from '@reskript/core'; -import {ary} from 'lodash'; -import {fillProjectSettings} from '../defaults'; -import {ProjectSettings, SettingsPlugin} from '../interface'; -import {applyPlugins} from '../plugins'; +import {fillProjectSettings} from '../defaults.js'; +import {ProjectSettings, SettingsPlugin} from '../interface.js'; +import {applyPlugins} from '../plugins.js'; test('one plugin', async () => { const settings: ProjectSettings = fillProjectSettings({provider: 'webpack', devServer: {}}); - const plugin = jest.fn((settings: ProjectSettings, cmd: ProjectAware): ProjectSettings => { + const plugin = vi.fn((settings: ProjectSettings, cmd: ProjectAware): ProjectSettings => { return { ...settings, devServer: { @@ -19,7 +19,9 @@ test('one plugin', async () => { const options = {cwd: 'cwd', command: 'build'}; const output = await applyPlugins(settings, [plugin], options); expect(plugin).toHaveBeenCalled(); + // @ts-expect-error expect(plugin.mock.calls[0][0]).toBe(settings); + // @ts-expect-error expect(plugin.mock.calls[0][1]).toBe(options); expect(output.devServer.port).toBe(8000); }); @@ -69,7 +71,7 @@ test('plugins factory', async () => { }, }; }; - const factory = jest.fn(ary(() => [port, domain], 1)); + const factory = vi.fn(() => [port, domain]); const output = await applyPlugins(settings, factory, {cwd: '', command: 'build'}); expect(factory).toHaveBeenCalled(); expect(factory.mock.calls[0][0]).toBe('build'); diff --git a/packages/settings/src/__tests__/validate.test.ts b/packages/settings/src/__tests__/validate.test.ts index 161dc5cb..718ba3cc 100644 --- a/packages/settings/src/__tests__/validate.test.ts +++ b/packages/settings/src/__tests__/validate.test.ts @@ -1,4 +1,5 @@ -import validate from '../validate'; +import {describe, test, expect} from 'vitest'; +import validate from '../validate.js'; describe('validate', () => { test('empty', () => { diff --git a/packages/settings/src/defaults.ts b/packages/settings/src/defaults.ts index bef7cc77..4039d3ba 100644 --- a/packages/settings/src/defaults.ts +++ b/packages/settings/src/defaults.ts @@ -1,4 +1,4 @@ -import {BuildSettings, DevServerSettings, PlaySettings, ProjectSettings, ReskriptProvider} from './interface'; +import {BuildSettings, DevServerSettings, PlaySettings, ProjectSettings, ReskriptProvider} from './interface.js'; type PartialBuildSettings = Omit, 'script' | 'style' | 'inspect'> & { script?: Partial; diff --git a/packages/settings/src/index.ts b/packages/settings/src/index.ts index 99437407..54532a99 100644 --- a/packages/settings/src/index.ts +++ b/packages/settings/src/index.ts @@ -1,14 +1,15 @@ import path from 'path'; import {existsSync} from 'fs'; +// @ts-expect-error import hasha from 'hasha'; import chokidar from 'chokidar'; import {importUserModule, logger, PackageInfo, ProjectAware, readPackageConfig} from '@reskript/core'; -import {ProjectSettings, Listener, Observe, ClientProjectSettings, ReskriptProvider} from './interface'; -import validate from './validate'; -import {fillProjectSettings, PartialProjectSettings} from './defaults'; -import {applyPlugins} from './plugins'; +import {ProjectSettings, Listener, Observe, ClientProjectSettings, ReskriptProvider} from './interface.js'; +import validate from './validate.js'; +import {fillProjectSettings, PartialProjectSettings} from './defaults.js'; +import {applyPlugins} from './plugins.js'; -export * from './interface'; +export * from './interface.js'; export {fillProjectSettings, PartialProjectSettings}; export interface UserSettings extends Omit { diff --git a/packages/settings/src/plugins.ts b/packages/settings/src/plugins.ts index 7d37e59f..fec7b528 100644 --- a/packages/settings/src/plugins.ts +++ b/packages/settings/src/plugins.ts @@ -1,5 +1,5 @@ import {pReduce} from '@reskript/core'; -import {ProjectSettings, ClientProjectSettings, PluginOptions} from './interface'; +import {ProjectSettings, ClientProjectSettings, PluginOptions} from './interface.js'; type Plugins = ClientProjectSettings['plugins']; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4bc61f36..b7ffdeb0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -521,8 +521,8 @@ importers: eslint: ^8.6.0 identity-obj-proxy: ^3.0.0 jest-raw-loader: ^1.0.1 - lodash: ^4.17.21 prettier: ^2.5.1 + ramda: ^0.27.1 resolve: ^1.20.0 typescript: 4.6.0-dev.20220105 unixify: ^1.0.0 @@ -538,7 +538,7 @@ importers: enzyme-to-json: 3.6.2_enzyme@3.11.0 identity-obj-proxy: 3.0.0 jest-raw-loader: 1.0.1 - lodash: 4.17.21 + ramda: 0.27.2 resolve: 1.21.0 unixify: 1.0.0 devDependencies: @@ -892,7 +892,6 @@ importers: execa: ^6.0.0 globby: ^12.0.2 inquirer: ^8.2.0 - lodash: ^4.17.21 ora: ^6.0.1 pad-stream: ^3.0.0 typescript: 4.6.0-dev.20220105 @@ -901,7 +900,6 @@ importers: execa: 6.0.0 globby: 12.0.2 inquirer: 8.2.0 - lodash: 4.17.21 ora: 6.0.1 pad-stream: 3.0.0 devDependencies: @@ -1015,33 +1013,31 @@ importers: specifiers: '@reskript/core': 3.0.2 '@types/babel__core': ^7.1.17 - '@types/jest': ^27.0.3 '@types/node': ^17.0.4 + c8: ^7.10.0 chokidar: ^3.5.2 eslint: ^8.6.0 hasha: ^5.2.0 - jest: ^27.4.5 - lodash: ^4.17.21 schema-utils: ^4.0.0 - ts-jest: ^27.1.2 typescript: 4.6.0-dev.20220105 + vite: ^2.7.7 + vitest: ^0.0.115 webpack: ^5.65.0 webpack-dev-server: ^4.7.1 dependencies: '@reskript/core': link:../core chokidar: 3.5.2 hasha: 5.2.2 - lodash: 4.17.21 schema-utils: 4.0.0 webpack-dev-server: 4.7.3_webpack@5.66.0 devDependencies: '@types/babel__core': 7.1.18 - '@types/jest': 27.4.0 '@types/node': 17.0.8 + c8: 7.11.0 eslint: 8.6.0 - jest: 27.4.7 - ts-jest: 27.1.2_e73e9da3c5fd460fb2dd381d0863ff42 typescript: 4.6.0-dev.20220105 + vite: 2.7.10 + vitest: 0.0.115_c8@7.11.0+vite@2.7.10 webpack: 5.66.0 packages/svg-to-component-loader: