From ba98c2bde3e8629e9d4e166b8cf538ab77fe9bb6 Mon Sep 17 00:00:00 2001 From: chencheng Date: Mon, 9 Mar 2020 16:30:26 +0800 Subject: [PATCH] feat: mock support _mock.ts and **/mock/** under src, Close #4077 --- .../dev/mock/createMiddleware.test.ts | 8 +++--- .../src/plugins/commands/dev/mock/mock.ts | 17 ++++-------- .../plugins/commands/dev/mock/utils.test.ts | 5 ++-- .../src/plugins/commands/dev/mock/utils.ts | 27 +++++++++---------- 4 files changed, 23 insertions(+), 34 deletions(-) diff --git a/packages/preset-built-in/src/plugins/commands/dev/mock/createMiddleware.test.ts b/packages/preset-built-in/src/plugins/commands/dev/mock/createMiddleware.test.ts index abcdfe16ac72..3dc6ee763c4a 100644 --- a/packages/preset-built-in/src/plugins/commands/dev/mock/createMiddleware.test.ts +++ b/packages/preset-built-in/src/plugins/commands/dev/mock/createMiddleware.test.ts @@ -17,10 +17,10 @@ describe('createMiddleware', () => { }); }; const HOME_PAGE = 'homepage'; - let watcher = null; - let port; - let server; - let hostname; + let watcher: any = null; + let port: number; + let server: any; + let hostname: string; beforeAll(async () => { const service = new Service({ diff --git a/packages/preset-built-in/src/plugins/commands/dev/mock/mock.ts b/packages/preset-built-in/src/plugins/commands/dev/mock/mock.ts index 74ad1d5295e9..a9b54fc0b58b 100644 --- a/packages/preset-built-in/src/plugins/commands/dev/mock/mock.ts +++ b/packages/preset-built-in/src/plugins/commands/dev/mock/mock.ts @@ -41,19 +41,12 @@ export default function(api: IApi) { const ignore = userConfig?.mock?.exclude; - // get all mock paths - const mockResult = getMockData({ - cwd, - ignore, - registerBabel, - }); - - // disable when not exist mock dir - if (!mockResult) { - return; - } - api.addBeforeMiddewares(() => { + const mockResult = getMockData({ + cwd, + ignore, + registerBabel, + }); const { middleware } = createMiddleware({ ...mockResult, updateMockData: () => { diff --git a/packages/preset-built-in/src/plugins/commands/dev/mock/utils.test.ts b/packages/preset-built-in/src/plugins/commands/dev/mock/utils.test.ts index c1dbc27d9380..f3bea6343a9a 100644 --- a/packages/preset-built-in/src/plugins/commands/dev/mock/utils.test.ts +++ b/packages/preset-built-in/src/plugins/commands/dev/mock/utils.test.ts @@ -21,7 +21,6 @@ describe('umi-mock:getMockData', () => { const { mockData } = getMockData({ cwd: `${fixtures}/normal`, - paths: service.paths, }); expect(mockData.length).toEqual(2); }); @@ -45,8 +44,8 @@ describe('umi-mock:getMockData', () => { 'normal/mock/_c.js', 'normal/mock/a.js', 'normal/mock/b.js', - // 'normal/pages/a/_mock.js', - // 'normal/pages/b/_mock.js', + 'normal/pages/a/_mock.js', + 'normal/pages/b/_mock.js', ]); }); diff --git a/packages/preset-built-in/src/plugins/commands/dev/mock/utils.ts b/packages/preset-built-in/src/plugins/commands/dev/mock/utils.ts index 7bc12d0c2a8b..ed832a8938d8 100644 --- a/packages/preset-built-in/src/plugins/commands/dev/mock/utils.ts +++ b/packages/preset-built-in/src/plugins/commands/dev/mock/utils.ts @@ -43,27 +43,24 @@ export interface IGetMockDataResult { * * @param param */ -export const getMockData: ( - opts: IGetMockPaths, -) => IGetMockDataResult | null = ({ +export const getMockData: (opts: IGetMockPaths) => IGetMockDataResult = ({ cwd, ignore = [], registerBabel = () => {}, }) => { - const absMockPaths = glob.sync(join(cwd, 'mock/**/*.[jt]s'), { - ignore, - }); - if (!absMockPaths.length) { - return null; - } - const absConfigPath = join(cwd, '.umirc.mock.js'); - const absConfigPathWithTS = join(cwd, '.umirc.mock.ts'); - const mockPaths = [ - ...(absMockPaths || []), - absConfigPath, - absConfigPathWithTS, + ...(glob.sync('mock/**/*.[jt]s', { + cwd, + ignore, + }) || []), + ...(glob.sync('**/_mock.[jt]s', { + cwd, + ignore, + }) || []), + '.umirc.mock.js', + '.umirc.mock.ts', ] + .map(path => join(cwd, path)) .filter(path => path && existsSync(path)) .map(path => winPath(path));