diff --git a/.nerdrc.ts b/.nerdrc.ts index f203a9c..9ad3030 100644 --- a/.nerdrc.ts +++ b/.nerdrc.ts @@ -11,7 +11,8 @@ export default { 'zmi-webpack', 'zmi-core', 'zmi', - 'zmi-preset' + 'zmi-preset', + 'zmi-miniapp' ] // sourceMaps: true } as IConfig diff --git a/docs/configuration.md b/docs/configuration.md index 489d6c1..8870d73 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -281,7 +281,7 @@ HTML 中会生成, ### frameType -- Type: `vue | react | miniApp` +- Type: `vue | react` - Default: `undefined` 指定运行框架 diff --git a/examples/normal-miniapp/.zmirc.ts b/examples/normal-miniapp/.zmirc.ts index 5e60189..4c55185 100644 --- a/examples/normal-miniapp/.zmirc.ts +++ b/examples/normal-miniapp/.zmirc.ts @@ -1,9 +1,5 @@ import { defineConfig } from 'zmi' -import path from 'path' -import gulpLess from 'gulp-less' export default defineConfig({ - miniAppConfig: { - output: 'miniprogram' - } + output: 'miniprogram' }) diff --git a/examples/normal-miniapp/package.json b/examples/normal-miniapp/package.json index 3112f91..2f6d6cf 100644 --- a/examples/normal-miniapp/package.json +++ b/examples/normal-miniapp/package.json @@ -3,10 +3,7 @@ "version": "1.0.0", "main": "index.js", "license": "MIT", - "devDependencies": { - "miniprogram-api-typings": "^3.2.2" - }, "scripts": { - "dev": "zmi dev" + "dev": "zmi-miniapp" } } diff --git a/jest.config.ts b/jest.config.ts index b94adbb..d542203 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -5,8 +5,6 @@ export default { return memo.concat([ '!packages/zmi-preset/src/plugins/features/*', '!packages/zmi-preset/src/plugins/commands/*', - '!packages/zmi-preset/src/plugins/common/BundleUtils.ts', - '!packages/zmi-preset/src/plugins/common/generateHtml.ts', '!packages/zmi-preset/src/plugins/registerMethods.ts', '!packages/zmi/src/cli.ts', @@ -20,6 +18,8 @@ export default { '!packages/*/fixtures/*/*', + '!packages/zmi-miniapp/src/**/*', + '!/examples/**', '!/website/**' ]) diff --git a/package.json b/package.json index 292d295..1cfc730 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,6 @@ "rimraf": "^3.0.2", "typescript": "^4.2.3", "yorkie": "^2.0.0", - "zmi-nerd": "^1.2.2-0" + "zmi-nerd": "^1.2.2-1" } } diff --git a/packages/zmi-babel-factory/node.js b/packages/zmi-babel-factory/node.js index 7774c65..8133912 100644 --- a/packages/zmi-babel-factory/node.js +++ b/packages/zmi-babel-factory/node.js @@ -11,7 +11,8 @@ module.exports = function (opts) { node: 'current' }, modules: 'commonjs' - } + }, + type: 'node' }, opts ) diff --git a/packages/zmi-babel-factory/src/index.ts b/packages/zmi-babel-factory/src/index.ts index df472e5..a14595a 100644 --- a/packages/zmi-babel-factory/src/index.ts +++ b/packages/zmi-babel-factory/src/index.ts @@ -2,6 +2,7 @@ import { deepmerge } from '@zmi-cli/utils' import path from 'path' export interface Ioptions { + type?: 'node' | 'react' | 'vue' typescript?: boolean react?: Record debug?: boolean @@ -26,8 +27,9 @@ export default (_context: never, options: Ioptions) => { 'transform-modules-umd', 'transform-modules-systemjs', 'transform-modules-amd', - 'transform-literals' - ] + 'transform-literals', + options.type === 'node' && 'transform-regenerator' + ].filter(Boolean) } const preset = { diff --git a/packages/zmi-core/package.json b/packages/zmi-core/package.json index 533425d..4ba975f 100644 --- a/packages/zmi-core/package.json +++ b/packages/zmi-core/package.json @@ -8,7 +8,10 @@ ], "license": "MIT", "dependencies": { + "@babel/core": "^7.13.10", + "@babel/register": "^7.13.8", "@zmi-cli/utils": "^1.0.6-alpha.8", + "@zmi-cli/babel-factory": "^1.0.6-alpha.8", "dotenv": "^8.2.0", "joi": "^17.4.0", "tapable": "^2.2.0" diff --git a/packages/zmi-utils/src/BabelRegister.test.ts b/packages/zmi-core/src/BabelRegister.test.ts similarity index 100% rename from packages/zmi-utils/src/BabelRegister.test.ts rename to packages/zmi-core/src/BabelRegister.test.ts diff --git a/packages/zmi-utils/src/BabelRegister.ts b/packages/zmi-core/src/BabelRegister.ts similarity index 91% rename from packages/zmi-utils/src/BabelRegister.ts rename to packages/zmi-core/src/BabelRegister.ts index 006c6b0..eea4ea9 100644 --- a/packages/zmi-utils/src/BabelRegister.ts +++ b/packages/zmi-core/src/BabelRegister.ts @@ -1,5 +1,4 @@ -import lodash from 'lodash' -import slash from 'slash' +import { lodash, slash } from '@zmi-cli/utils' export default class BabelRegister { only: Record = {} @@ -15,6 +14,7 @@ export default class BabelRegister { .reduce((memo, key) => memo.concat(this.only[key]), []) .map(slash) ) + require('@babel/register')({ presets: [require.resolve('@zmi-cli/babel-factory/node')], ignore: [/node_modules/], diff --git a/packages/zmi-core/src/Service.ts b/packages/zmi-core/src/Service.ts index f2f24ee..a3a75ca 100644 --- a/packages/zmi-core/src/Service.ts +++ b/packages/zmi-core/src/Service.ts @@ -1,4 +1,4 @@ -import { BabelRegister, lodash, NodeEnv, yargsParser } from '@zmi-cli/utils' +import { lodash, NodeEnv, yargsParser } from '@zmi-cli/utils' import { AsyncSeriesWaterfallHook } from 'tapable' import { IConfig } from '@zmi-cli/webpack' import { EventEmitter } from 'events' @@ -7,6 +7,7 @@ import path from 'path' import { resolvePlugins, pathToRegister } from './pluginUtils' import PluginAPI, { IPluginAPIOptions } from './PluginAPI' +import BabelRegister from './BabelRegister' import loadDotEnv from './withEnv' import Config from './Config' import paths from './paths' @@ -93,7 +94,7 @@ export default class Service extends EventEmitter { /** * @desc initial user config */ - initConifg: IConfig + initConifg: Record /** * @desc runtime babel diff --git a/packages/zmi-core/src/pluginUtils.ts b/packages/zmi-core/src/pluginUtils.ts index 69654bb..72c4508 100644 --- a/packages/zmi-core/src/pluginUtils.ts +++ b/packages/zmi-core/src/pluginUtils.ts @@ -101,7 +101,7 @@ export function pathToRegister({ path: pluginPath, cwd }: { path: string; cwd: s const ret = require(pluginPath) return compatibleWithESModule(ret) } catch (err) { - throw new Error(`Register plugin ${path} failed, since ${err.message}`) + throw new Error(`Register plugin ${pluginPath} failed, since ${err.message}`) } } } diff --git a/packages/zmi-create-app/fixtures/test-miniapp/.zmirc.ts b/packages/zmi-create-app/fixtures/test-miniapp/.zmirc.ts index d3ff50f..6d120bd 100644 --- a/packages/zmi-create-app/fixtures/test-miniapp/.zmirc.ts +++ b/packages/zmi-create-app/fixtures/test-miniapp/.zmirc.ts @@ -1,5 +1,3 @@ export default { - miniAppConfig: { - output: 'miniprogram' - } + output: 'miniprogram' } diff --git a/packages/zmi-create-app/fixtures/test-miniapp/package.json b/packages/zmi-create-app/fixtures/test-miniapp/package.json index 0650c72..004de0a 100644 --- a/packages/zmi-create-app/fixtures/test-miniapp/package.json +++ b/packages/zmi-create-app/fixtures/test-miniapp/package.json @@ -4,10 +4,9 @@ "main": "index.js", "license": "MIT", "devDependencies": { - "miniprogram-api-typings": "^3.2.2", - "zmi": "^1.0.6-alpha.8" + "zmi-miniapp": "^1.0.6-alpha.8" }, "scripts": { - "dev": "zmi dev" + "dev": "zmi-miniapp" } } diff --git a/packages/zmi-create-app/fixtures/test-miniapp/tsconfig.json b/packages/zmi-create-app/fixtures/test-miniapp/tsconfig.json index e7b317c..2175c36 100644 --- a/packages/zmi-create-app/fixtures/test-miniapp/tsconfig.json +++ b/packages/zmi-create-app/fixtures/test-miniapp/tsconfig.json @@ -1,16 +1,14 @@ { "compilerOptions": { - "lib": ["ESNext"], - "module": "es6", + "module": "esnext", "esModuleInterop": true, "target": "es5", "declaration": false, "noImplicitAny": true, "strict": true, - "baseUrl": ".", "skipLibCheck": true, "suppressImplicitAnyIndexErrors": true, "types": ["miniprogram-api-typings"] }, "include": ["src"] -} \ No newline at end of file +} diff --git a/packages/zmi-create-app/fixtures/test-miniapp/yarn.lock b/packages/zmi-create-app/fixtures/test-miniapp/yarn.lock deleted file mode 100644 index 44765d7..0000000 --- a/packages/zmi-create-app/fixtures/test-miniapp/yarn.lock +++ /dev/null @@ -1,8 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -miniprogram-api-typings@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/miniprogram-api-typings/-/miniprogram-api-typings-3.2.2.tgz#c928c32cffcb948200273c214e3dee3957eafd14" - integrity sha512-7TSeYV3Z4sUAw802K+bIFTRlQNUzl2GZ4zWnh5fMETjDsU7e8+uLzK7vF9Nd9TGYcePPhoHee25K86oHfDnxLA== diff --git a/packages/zmi-create-app/templates/miniapp/.editorconfig b/packages/zmi-create-app/templates/miniapp/.editorconfig new file mode 100644 index 0000000..7e3649a --- /dev/null +++ b/packages/zmi-create-app/templates/miniapp/.editorconfig @@ -0,0 +1,16 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab diff --git a/packages/zmi-create-app/templates/miniapp/.gitignore.tpl b/packages/zmi-create-app/templates/miniapp/.gitignore.tpl new file mode 100644 index 0000000..97c3045 --- /dev/null +++ b/packages/zmi-create-app/templates/miniapp/.gitignore.tpl @@ -0,0 +1,15 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/npm-debug.log* +/yarn-error.log +/yarn.lock +/package-lock.json + +# production +/dist + +# misc +.DS_Store + diff --git a/packages/zmi-create-app/templates/miniapp/.prettierrc b/packages/zmi-create-app/templates/miniapp/.prettierrc new file mode 100644 index 0000000..94beb14 --- /dev/null +++ b/packages/zmi-create-app/templates/miniapp/.prettierrc @@ -0,0 +1,11 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "printWidth": 80, + "overrides": [ + { + "files": ".prettierrc", + "options": { "parser": "json" } + } + ] +} diff --git a/packages/zmi-create-app/templates/miniapp/.zmirc.ts b/packages/zmi-create-app/templates/miniapp/.zmirc.ts index d3ff50f..0def3c7 100644 --- a/packages/zmi-create-app/templates/miniapp/.zmirc.ts +++ b/packages/zmi-create-app/templates/miniapp/.zmirc.ts @@ -1,5 +1,5 @@ +import IConfig from 'zmi-miniapp'; + export default { - miniAppConfig: { - output: 'miniprogram' - } -} + output: 'miniprogram', +} as IConfig; diff --git a/packages/zmi-create-app/templates/miniapp/package.json.tpl b/packages/zmi-create-app/templates/miniapp/package.json.tpl index c562e7a..14630b1 100644 --- a/packages/zmi-create-app/templates/miniapp/package.json.tpl +++ b/packages/zmi-create-app/templates/miniapp/package.json.tpl @@ -4,10 +4,10 @@ "main": "index.js", "license": "MIT", "devDependencies": { - "miniprogram-api-typings": "^3.2.2", - "zmi": "^{{{ version }}}" + "miniprogram-api-typings": "^3.3.0", + "zmi-miniapp": "^{{{ version }}}" }, "scripts": { - "dev": "zmi dev" + "dev": "zmi-miniapp" } } diff --git a/packages/zmi-create-app/templates/miniapp/src/app.wxss b/packages/zmi-create-app/templates/miniapp/src/app.less similarity index 98% rename from packages/zmi-create-app/templates/miniapp/src/app.wxss rename to packages/zmi-create-app/templates/miniapp/src/app.less index 06c6fc9..1d3b114 100644 --- a/packages/zmi-create-app/templates/miniapp/src/app.wxss +++ b/packages/zmi-create-app/templates/miniapp/src/app.less @@ -7,4 +7,4 @@ justify-content: space-between; padding: 200rpx 0; box-sizing: border-box; -} +} diff --git a/packages/zmi-create-app/templates/miniapp/tsconfig.json.tpl b/packages/zmi-create-app/templates/miniapp/tsconfig.json.tpl index e7b317c..2175c36 100644 --- a/packages/zmi-create-app/templates/miniapp/tsconfig.json.tpl +++ b/packages/zmi-create-app/templates/miniapp/tsconfig.json.tpl @@ -1,16 +1,14 @@ { "compilerOptions": { - "lib": ["ESNext"], - "module": "es6", + "module": "esnext", "esModuleInterop": true, "target": "es5", "declaration": false, "noImplicitAny": true, "strict": true, - "baseUrl": ".", "skipLibCheck": true, "suppressImplicitAnyIndexErrors": true, "types": ["miniprogram-api-typings"] }, "include": ["src"] -} \ No newline at end of file +} diff --git a/packages/zmi-create-app/templates/miniapp/yarn.lock b/packages/zmi-create-app/templates/miniapp/yarn.lock deleted file mode 100644 index 44765d7..0000000 --- a/packages/zmi-create-app/templates/miniapp/yarn.lock +++ /dev/null @@ -1,8 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -miniprogram-api-typings@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/miniprogram-api-typings/-/miniprogram-api-typings-3.2.2.tgz#c928c32cffcb948200273c214e3dee3957eafd14" - integrity sha512-7TSeYV3Z4sUAw802K+bIFTRlQNUzl2GZ4zWnh5fMETjDsU7e8+uLzK7vF9Nd9TGYcePPhoHee25K86oHfDnxLA== diff --git a/packages/zmi-miniapp/.nerdrc.ts b/packages/zmi-miniapp/.nerdrc.ts new file mode 100644 index 0000000..68dd514 --- /dev/null +++ b/packages/zmi-miniapp/.nerdrc.ts @@ -0,0 +1,3 @@ +export default { + disableTypes: true +} diff --git a/packages/zmi-miniapp/README.md b/packages/zmi-miniapp/README.md new file mode 100644 index 0000000..d3c178e --- /dev/null +++ b/packages/zmi-miniapp/README.md @@ -0,0 +1 @@ +# zmi-miniapp diff --git a/packages/zmi-miniapp/bin/zmi-miniapp.js b/packages/zmi-miniapp/bin/zmi-miniapp.js new file mode 100755 index 0000000..8c4a022 --- /dev/null +++ b/packages/zmi-miniapp/bin/zmi-miniapp.js @@ -0,0 +1,3 @@ +#! /usr/bin/env node + +require('../lib/cli') diff --git a/packages/zmi-miniapp/index.d.ts b/packages/zmi-miniapp/index.d.ts new file mode 100644 index 0000000..9146669 --- /dev/null +++ b/packages/zmi-miniapp/index.d.ts @@ -0,0 +1,17 @@ +import { IConfig as nerdConfig } from 'zmi-nerd' + +type IConfig = Pick< + nerdConfig, + | 'entry' + | 'afterHook' + | 'beforeReadWriteStream' + | 'esBuild' + | 'disableTypes' + | 'lessOptions' + | 'output' + | 'paths' + | 'extraBabelPlugins' + | 'extraBabelPresets' +> + +export default IConfig diff --git a/packages/zmi-miniapp/index.js b/packages/zmi-miniapp/index.js new file mode 100644 index 0000000..1267fc7 --- /dev/null +++ b/packages/zmi-miniapp/index.js @@ -0,0 +1 @@ +module.exports = require('eslint-config-zmi') diff --git a/packages/zmi-miniapp/package.json b/packages/zmi-miniapp/package.json new file mode 100644 index 0000000..43d88f3 --- /dev/null +++ b/packages/zmi-miniapp/package.json @@ -0,0 +1,32 @@ +{ + "name": "zmi-miniapp", + "version": "1.0.6-alpha.8", + "main": "index.js", + "types": "index.d.ts", + "license": "MIT", + "files": [ + "bin", + "lib", + "index.js", + "index.d.ts" + ], + "dependencies": { + "@zmi-cli/core": "^1.0.6-alpha.8", + "eslint": "^7.22.0", + "eslint-config-zmi": "^1.2.3", + "gulp-rename": "^2.0.0", + "zmi-nerd": "^1.2.2-1" + }, + "publishConfig": { + "access": "public" + }, + "bin": { + "zmi-miniapp": "bin/zmi-miniapp.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "devDependencies": { + "@types/gulp-rename": "^2.0.0" + } +} diff --git a/packages/zmi-miniapp/src/cli.ts b/packages/zmi-miniapp/src/cli.ts new file mode 100644 index 0000000..e393c51 --- /dev/null +++ b/packages/zmi-miniapp/src/cli.ts @@ -0,0 +1,24 @@ +import { fork } from 'child_process' +import readline from 'readline' + +const child = fork(require.resolve('./start')) +const isWin = process.platform === 'win32' +const Signals: NodeJS.Signals[] = ['SIGINT', 'SIGTERM'] + +if (isWin) { + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout + }) + + rl.on(Signals[0], () => { + process.emit(Signals[0], Signals[0]) + }) +} + +Signals.forEach((SignalKey) => { + process.on(SignalKey, () => { + child.kill(SignalKey) + process.exit(1) + }) +}) diff --git a/packages/zmi-preset/src/plugins/commands/miniappDev.ts b/packages/zmi-miniapp/src/miniapp.ts similarity index 52% rename from packages/zmi-preset/src/plugins/commands/miniappDev.ts rename to packages/zmi-miniapp/src/miniapp.ts index 47749c2..b6c0db5 100644 --- a/packages/zmi-preset/src/plugins/commands/miniappDev.ts +++ b/packages/zmi-miniapp/src/miniapp.ts @@ -1,15 +1,23 @@ import { IApi } from '@zmi-cli/types' +import rename from 'gulp-rename' + import Nerd from 'zmi-nerd' export default (api: IApi) => { api.registerCommand({ - name: 'miniAppDev', + name: 'miniapp', description: 'start miniApp dev server for development', async fn() { const nerd = new Nerd({ customPrefix: 'miniApp', watch: true, - userConfig: api.config.miniAppConfig ?? {} + userConfig: { + output: 'miniprogram', + ...(api.config ?? {}), + afterReadWriteStream({ gulpIf }) { + return gulpIf((file) => file.path.endsWith('.css'), rename({ extname: '.wxss' })) + } + } }) await nerd.step() diff --git a/packages/zmi-miniapp/src/preset/afterHook.ts b/packages/zmi-miniapp/src/preset/afterHook.ts new file mode 100644 index 0000000..01a9c53 --- /dev/null +++ b/packages/zmi-miniapp/src/preset/afterHook.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'afterHook', + config: { + schema(joi) { + return joi.func() + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/beforeReadWriteStream.ts b/packages/zmi-miniapp/src/preset/beforeReadWriteStream.ts new file mode 100644 index 0000000..f8d5818 --- /dev/null +++ b/packages/zmi-miniapp/src/preset/beforeReadWriteStream.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'beforeReadWriteStream', + config: { + schema(joi) { + return joi.func() + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/disableTypes.ts b/packages/zmi-miniapp/src/preset/disableTypes.ts new file mode 100644 index 0000000..4b2062a --- /dev/null +++ b/packages/zmi-miniapp/src/preset/disableTypes.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'disableTypes', + config: { + schema(joi) { + return joi.boolean() + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/entry.ts b/packages/zmi-miniapp/src/preset/entry.ts new file mode 100644 index 0000000..09a5be8 --- /dev/null +++ b/packages/zmi-miniapp/src/preset/entry.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'entry', + config: { + schema(joi) { + return joi.string() + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/esBuild.ts b/packages/zmi-miniapp/src/preset/esBuild.ts new file mode 100644 index 0000000..e745e18 --- /dev/null +++ b/packages/zmi-miniapp/src/preset/esBuild.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'esBuild', + config: { + schema(joi) { + return joi.boolean() + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/extraBabelPlugins.ts b/packages/zmi-miniapp/src/preset/extraBabelPlugins.ts new file mode 100644 index 0000000..2b4caec --- /dev/null +++ b/packages/zmi-miniapp/src/preset/extraBabelPlugins.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'extraBabelPlugins', + config: { + schema(joi) { + return joi.array().items(joi.any()) + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/extraBabelPresets.ts b/packages/zmi-miniapp/src/preset/extraBabelPresets.ts new file mode 100644 index 0000000..afa4762 --- /dev/null +++ b/packages/zmi-miniapp/src/preset/extraBabelPresets.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'extraBabelPresets', + config: { + schema(joi) { + return joi.array().items(joi.any()) + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/lessOptions.ts b/packages/zmi-miniapp/src/preset/lessOptions.ts new file mode 100644 index 0000000..ee5e4f3 --- /dev/null +++ b/packages/zmi-miniapp/src/preset/lessOptions.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'lessOptions', + config: { + schema(joi) { + return joi.object() + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/output.ts b/packages/zmi-miniapp/src/preset/output.ts new file mode 100644 index 0000000..23e58b4 --- /dev/null +++ b/packages/zmi-miniapp/src/preset/output.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'output', + config: { + schema(joi) { + return joi.string() + } + } + }) +} diff --git a/packages/zmi-miniapp/src/preset/paths.ts b/packages/zmi-miniapp/src/preset/paths.ts new file mode 100644 index 0000000..db5e7ea --- /dev/null +++ b/packages/zmi-miniapp/src/preset/paths.ts @@ -0,0 +1,12 @@ +import { IApi } from '@zmi-cli/types' + +export default (api: IApi) => { + api.describe({ + key: 'paths', + config: { + schema(joi) { + return joi.object() + } + } + }) +} diff --git a/packages/zmi-miniapp/src/start.ts b/packages/zmi-miniapp/src/start.ts new file mode 100644 index 0000000..76a3b72 --- /dev/null +++ b/packages/zmi-miniapp/src/start.ts @@ -0,0 +1,38 @@ +import { Service } from '@zmi-cli/core' + +const start = () => { + const Signals: NodeJS.Signals[] = ['SIGINT', 'SIGQUIT', 'SIGTERM'] + try { + const service = new Service({ + cwd: process.cwd(), + plugins: [ + require.resolve('./miniapp.js'), + require.resolve('./preset/afterHook.js'), + require.resolve('./preset/beforeReadWriteStream.js'), + require.resolve('./preset/disableTypes.js'), + require.resolve('./preset/entry.js'), + require.resolve('./preset/esBuild.js'), + require.resolve('./preset/extraBabelPlugins.js'), + require.resolve('./preset/extraBabelPresets.js'), + require.resolve('./preset/lessOptions.js'), + require.resolve('./preset/output.js'), + require.resolve('./preset/paths.js') + ] + }) + + service.run({ + command: 'miniapp' + }) + + Signals.forEach((signal) => { + process.once(signal, () => { + process.exit(0) + }) + }) + } catch (e) { + console.error(e.message) + console.error(e.stack) + process.exit(1) + } +} +start() diff --git a/packages/zmi-preset/package.json b/packages/zmi-preset/package.json index f2b45de..bcaacd4 100644 --- a/packages/zmi-preset/package.json +++ b/packages/zmi-preset/package.json @@ -18,7 +18,6 @@ "@zmi-cli/core": "^1.0.6-alpha.8", "@zmi-cli/types": "^1.0.6-alpha.8", "@zmi-cli/utils": "^1.0.6-alpha.8", - "@zmi-cli/webpack": "^1.0.6-alpha.8", - "zmi-nerd": "^1.2.2-0" + "@zmi-cli/webpack": "^1.0.6-alpha.8" } } diff --git a/packages/zmi-preset/src/plugins/commands/dev.ts b/packages/zmi-preset/src/plugins/commands/dev.ts index 1a480d0..f372a0a 100644 --- a/packages/zmi-preset/src/plugins/commands/dev.ts +++ b/packages/zmi-preset/src/plugins/commands/dev.ts @@ -64,36 +64,7 @@ export default (api: IApi) => { api.env = 'development' process.env.NODE_ENV = 'development' - const { miniAppConfig, frameType } = api.config - let FrameType = frameType && (frameType !== 'miniApp' ? 'webDev' : 'miniAppDev') - - if (!FrameType) { - if (miniAppConfig) { - FrameType = 'miniAppDev' - } else { - const projectConfig = [ - fs.existsSync(`${api.paths.appSrcPath}/project.config.json`), - fs.existsSync(`${api.paths.appSrcPath}/app.json`) - ].some(Boolean) - - let isWeb = false - if (api.pkg?.dependencies) { - isWeb = Object.keys(api.pkg?.dependencies).some((name) => - ['react', 'vue'].includes(name) - ) - } - - if (isWeb && projectConfig) { - throw new Error( - `zmi can't determine it is a 'web/miniapp' environment, please specify 'frameType'` - ) - } - - FrameType = projectConfig ? 'miniAppDev' : 'webDev' - } - } - - api.service.runCommand({ command: FrameType, args }) + api.service.runCommand({ command: 'webDev', args }) const watch = process.env.WATCH !== 'none' diff --git a/packages/zmi-utils/package.json b/packages/zmi-utils/package.json index c8d883c..85b8fcd 100644 --- a/packages/zmi-utils/package.json +++ b/packages/zmi-utils/package.json @@ -5,10 +5,8 @@ "types": "lib/index.d.ts", "license": "MIT", "dependencies": { - "@babel/core": "^7.13.10", - "@babel/register": "^7.13.8", "@babel/types": "^7.13.0", - "@types/cheerio": "^0.22.25", + "@types/cheerio": "^0.22.27", "@types/fs-extra": "^9.0.8", "@types/glob": "^7.1.3", "@types/inquirer": "^7.3.1", diff --git a/packages/zmi-utils/src/index.ts b/packages/zmi-utils/src/index.ts index 3cb2aac..937ea24 100644 --- a/packages/zmi-utils/src/index.ts +++ b/packages/zmi-utils/src/index.ts @@ -26,7 +26,6 @@ import launchDevice, { defaultYargsOptions as dyo } from './launchDevice' import compatibleWithESModule from './compatibleWithESModule' import parseRequireDeps from './parseRequireDeps' import { NodeEnv, ArgsType } from './types' -import BabelRegister from './BabelRegister' import clearConsole from './clearConsole' import mergeConfig from './mergeConfig' import flatDeep from './flatDeep' @@ -56,7 +55,6 @@ export { pkgUp, lodash, chokidar, - BabelRegister, deepmerge, mergeConfig, compatibleWithESModule, diff --git a/packages/zmi-webpack/package.json b/packages/zmi-webpack/package.json index ab77c8c..ec2f6c5 100644 --- a/packages/zmi-webpack/package.json +++ b/packages/zmi-webpack/package.json @@ -33,7 +33,7 @@ "css-minimizer-webpack-plugin": "^1.2.0", "css-modules-typescript-loader": "^4.0.1", "ejs": "^3.1.6", - "eslint": "^7.21.0", + "eslint": "^7.22.0", "eslint-config-zmi": "^1.2.3", "eslint-webpack-plugin": "^2.5.2", "file-loader": "^6.2.0", diff --git a/packages/zmi-webpack/src/defaultConfig.ts b/packages/zmi-webpack/src/defaultConfig.ts index d8b4ecd..3fddba7 100644 --- a/packages/zmi-webpack/src/defaultConfig.ts +++ b/packages/zmi-webpack/src/defaultConfig.ts @@ -1,28 +1,23 @@ // when using @zmi/webpack alone // The logic here is similar to the preset logic, but does not conflict const configDefault = { - autoCSSModules: true, alias: {}, + autoCSSModules: true, autoprefixer: { autoprefixer: { flexbox: 'no-2009' }, stage: 3 }, - define: {}, + devServer: {}, devtool: false, - externals: {}, + define: {}, disableESLint: true, - devServer: {}, - extraBabelPresets: [], extraBabelPlugins: [], + externals: {}, favicon: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjEyOTY3Mjk2MzAwIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9Ijc4NjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTQ1IDM3MS42bDUwLTc2IDU2LTMwIDQ0LTgwIDgyLTI0IDYwLTQ2LjggMTI0LTEwLjcgODggNTEuNSA0OCAxNCA1OCA1NiAyOCA0NiA0NiAyMCA1MCA2MnYzOEgxNDV6IiBmaWxsPSIjRkZGRkZGIiBwLWlkPSI3ODY2Ij48L3BhdGg+PHBhdGggZD0iTTM0MiA4MTUuNmgzNjFsMy43IDExOC40SDMxNy4zTDMzMSA4MTUuNnoiIGZpbGw9IiM4MjUyOWQiIHAtaWQ9Ijc4NjciIGRhdGEtc3BtLWFuY2hvci1pZD0iYTMxM3guNzc4MTA2OS4wLmkyNSIgY2xhc3M9InNlbGVjdGVkIj48L3BhdGg+PHBhdGggZD0iTTExOS45IDM4My44bDgzMi4xIDcuOS0yNC44IDE0NS45LTU5LjIgMTMyLTY3IDc0LjMtODguMSA3NS43LTM4MS45LTQtMTE4LTcxLjdMOTYuOCA1OTkuNiA3MiAzOTEuOHoiIGZpbGw9IiM4MjUyOWQiIHAtaWQ9Ijc4NjgiIGRhdGEtc3BtLWFuY2hvci1pZD0iYTMxM3guNzc4MTA2OS4wLmkyNCIgY2xhc3M9InNlbGVjdGVkIj48L3BhdGg+PHBhdGggZD0iTTk2MCA0MTFjMC03LjItMi45LTE0LjEtOC0xOS4ycy0xMi04LTE5LjItOGgtMzEuOWMtNC44LTYzLjItNTEuOC0xMTQuNi0xMTMuMS0xMjUuNC0xMi02NC4yLTY4LjItMTEzLTEzNS44LTExMy0wLjUgMC0xIDAuMy0xLjUgMC4zLTI3LjYtMzgtNzkuNS02My42LTEzOC45LTYzLjYtNTMuNyAwLTEwMy41IDIwLjgtMTMzLjIgNTUuOC0yLjEgMi40LTMuNiA1LjEtNS40IDcuNi02Ny40IDAuMy0xMjMuMyA0OS0xMzUuMiAxMTMtNjEuMSAxMS4xLTEwNy44IDYyLjMtMTEyLjYgMTI1LjRoLTM0Yy03LjIgMC0xNC4xIDIuOS0xOS4yIDgtNC41IDQuNS03LjIgMTAuMy03LjggMTYuNS0wLjEgMC45LTAuMSAxLjgtMC4xIDIuNyAwIDMuNiAwIDcuNiAwLjEgMTEuNyAyLjEgOTMgMzAuNyAzMTUgMjQ2LjIgNDAwLjgtMC4zIDEuNy0xIDMuMy0xIDUuMnY4Ni4xYzAgNy4yIDIuOSAxNC4xIDggMTkuMnMxMiA4IDE5LjIgOGgzNTFjNy4yIDAgMTQuMS0yLjkgMTkuMi04czgtMTIgOC0xOS4ydi04Ni4xYzAtMy4yLTAuOC02LjItMS44LTkuMUM4ODIuMiA3NDUuOSA5NjAgNTc3LjkgOTYwIDQxMXpNMjQzLjcgMjkwLjdsMjIuMy00IDQuMS0yMi4zYzkuMi00OS43IDUyLjYtODYgMTAzLTg2LjJsMTYuNy0wLjEgOS44LTEzLjVjMS0xLjMgMS44LTIuNSAyLjUtMy42IDAuNS0wLjcgMS4xLTEuNyAxLjQtMiAyMy41LTI3LjcgNjMuOS00NC4yIDEwOC4xLTQ0LjIgNDYuOCAwIDg5LjkgMTkuMiAxMTIuNCA1MC4xbDEwLjUgMTQuNSAxNy45LTFjMC44IDAgMS41LTAuMSAyLjItMC4yIDQ5LjUgMS4zIDkxLjcgMzcuMSAxMDAuOCA4Ni4ybDQuMiAyMi4zIDIyLjQgNGM0Ni4yIDguMiA4MS4yIDQ2LjMgODUuOSA5My4xSDE1OC4yYzQuNi00Ni43IDM5LjUtODQuOCA4NS41LTkzLjF6IG00MzguMiA2MTguNUgzNDIuMVY4MzNoMzM5Ljh2NzYuMnpNODAwLjYgNzI0Yy0yOS4zIDI3LjEtNjMuMyA0OS4xLTEwMC45IDY1LjVsLTI0LjYgMTAuN0gzNDAuNGwtMTgtNy4yYy04OC4zLTM1LjEtMTUyLTk5LjEtMTg5LjQtMTkwLjItMzAtNzMuMi0zNS43LTE0Ni0zNi4yLTE4Ni4yaDgzMC4zYy0wLjkgNzkuMS0yMC4xIDE1NC4yLTU1LjggMjE3LjUtMTkuMiAzNC4xLTQyLjkgNjQuMy03MC43IDg5Ljl6IiBmaWxsPSIiIHAtaWQ9Ijc4NjkiPjwvcGF0aD48L3N2Zz4=', extraPostCSSPlugins: [], + extraBabelPresets: [], hash: true, - headScripts: [], htmlPlugin: {}, ignoreMomentLocale: true, links: [], - metas: [], - mountElementId: 'root', - outputPath: 'dist', - plugins: [], loaderOptions: { lessLoader: {}, scssLoader: {}, @@ -30,11 +25,16 @@ const configDefault = { styleLoader: {}, cssLoader: {} }, + headScripts: [], + mountElementId: 'root', + metas: [], + outputPath: 'dist', publicPath: '/', + plugins: [], scripts: [], - styles: [], + terserOptions: {}, targets: { node: true, chrome: 49, firefox: 64, safari: 10, edge: 13, ios: 10 }, - terserOptions: {} + styles: [] } export const htmlDefaultOptions = { headScripts: [], diff --git a/packages/zmi-webpack/src/types.ts b/packages/zmi-webpack/src/types.ts index 75daae8..5cae895 100644 --- a/packages/zmi-webpack/src/types.ts +++ b/packages/zmi-webpack/src/types.ts @@ -1,5 +1,4 @@ import webpackDevServer from 'webpack-dev-server' -import { IConfig as nerdConfig } from 'zmi-nerd' import HtmlPlugin from 'html-webpack-plugin' import WebpackChain from 'webpack-chain' import { Configuration } from 'webpack' @@ -66,12 +65,12 @@ type KnownKeys = { type RequireOnly> = Pick> export interface IConfig { + frameType?: 'react' | 'vue' title?: string mountElementId?: string copy?: string[] | { from: string; to: string }[] disableESLint?: boolean devServer?: webpackDevServer.Configuration - frameType?: 'react' | 'vue' | 'miniApp' loaderOptions?: { lessLoader?: Record scssLoader?: Record @@ -115,10 +114,6 @@ export interface IConfig { dynamicImport?: boolean autoCSSModules?: boolean targets?: ITargets - miniAppConfig?: Omit< - nerdConfig, - 'pkgs' | 'nodeVersion' | 'nodeFiles' | 'browserFiles' | 'react' | 'target' | 'moduleType' - > chainWebpack?: ( meme: WebpackChain, options: { diff --git a/packages/zmi/src/getRoot.test.ts b/packages/zmi/src/getRoot.test.ts index cebc7e3..b5b2306 100644 --- a/packages/zmi/src/getRoot.test.ts +++ b/packages/zmi/src/getRoot.test.ts @@ -1,4 +1,4 @@ -import {slash} from '@zmi-cli/utils' +import { slash } from '@zmi-cli/utils' import { getCwd, getPkg } from './getRoot' import path from 'path' diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index ec52c3f..d8ff966 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -40,6 +40,12 @@ module.exports = { label: '指南', position: 'left' }, + { + to: 'miniapp/', + activeBasePath: 'miniapp', + label: '小程序', + position: 'left' + }, { href: 'https://github.com/l-zoy/zmi', label: 'GitHub', diff --git a/website/src/pages/miniapp.md b/website/src/pages/miniapp.md new file mode 100644 index 0000000..14f4bab --- /dev/null +++ b/website/src/pages/miniapp.md @@ -0,0 +1,121 @@ +--- +id: miniapp +title: 小程序配置 +--- + +### 介绍 + +小程序配置是独立的, 默认模板的是 `微信小程序` 的, 如果想用于其它小程序, 手动拷贝一下代码到`src`目录下, 安装相关小程序的`types`即可, js 编译也是支持的 + +小程序编译是 file for file 模式, 默认支持 `less` 预处理器, + +### ESLint + +默认是支持的, 由于小程序官方没有 eslint 插件, 只能用 extends:["zmi-miniapp/base"] 或者 extends:["zmi-miniapp/typescript"] + +比如: + +```js +// .erlintrc +{ + "root": true, + "extends": ["zmi-miniapp/typescript"] +} +``` + +### config + +Zmi 在 `.zmirc.js` 中配置项目和插件,支持 ts。一份常见的配置如下, + +```javascript +export default { + entry: 'src', + paths: :{ + '@':'./src' + } +} +``` + +### paths + +- Type: `object` +- Default: `{}` + +配置别名,对引用路径进行映射。 + +比如: + +```js +export default { + paths: { + '@': '/tmp/a/b/foo' + } +} +``` + +### entry + +- Type: `string` +- Default: `src` + +监听的目录。 + +### output + +- Type: `string` +- Default: `miniprogram` + +输出的目录。 + +### esBuild + +- Type: `boolean` +- Default: `false` + +是否启用`esbuild`编译, 默认是`babel` + +### disableTypes + +- Type: `boolean` +- Default: `false` + +是否需要输出 d.ts 文件 + +### lessOptions + +- Type: `object` +- Default: `{}` + +详细配置请参考[gulp-less](https://github.com/gulp-community/gulp-less) + +### extraBabelPlugins + +- Type: `string[]` +- Default: `[]` + +额外的 babel 插件 + +### extraBabelPresets + +- Type: `string[]` +- Default: `[]` + +额外的 babel 预设 + +### beforeReadWriteStream + +- Type: `Function` + +文件 tranfrom 开始前执行 + +### afterReadWriteStream + +- Type: `Function` + +文件 tranfrom 开始后, 输出前执行 + +### afterHook + +- Type: `Function` + +输出目录后执行 diff --git a/yarn.lock b/yarn.lock index a40cef5..a5c7de8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2208,10 +2208,10 @@ "@types/connect" "*" "@types/node" "*" -"@types/cheerio@^0.22.25": - version "0.22.26" - resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.26.tgz#190127a564d723e17f414d358e2453a5dced0300" - integrity sha512-ckxG5bCHk803zCbeq3GO4wbFan8AyVP8BuYynR0E0d/CD0N8I92kXyvikDWsbG14onoKTXR6B+sboxwjnTMSRg== +"@types/cheerio@^0.22.27": + version "0.22.27" + resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.27.tgz#3a44d9b06fa40ca43599380cd0f3e2a1ceb98a57" + integrity sha512-UpmYZewEWNEE6Ya24RzAQ2X2OYwz32AaLyzYinpM8qqFGRyYufqKSvxPjjZkvS+h16bajfXl7VojrAxWzG/+mA== dependencies: "@types/node" "*" @@ -2325,6 +2325,14 @@ "@types/node" "*" "@types/vinyl" "*" +"@types/gulp-rename@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/gulp-rename/-/gulp-rename-2.0.0.tgz#462ab808c6ebb977b7a9770e0f5cb6cea481a7d9" + integrity sha512-bgpP2SYp66vH71kRZWv6+0JgBrET8bXNhKMknPsJH0mS3yHyt7wgvISltmV1b8JaaWMjE76oAMquW1h60De5vw== + dependencies: + "@types/node" "*" + "@types/vinyl" "*" + "@types/gulp-sourcemaps@^0.0.34": version "0.0.34" resolved "https://registry.yarnpkg.com/@types/gulp-sourcemaps/-/gulp-sourcemaps-0.0.34.tgz#af63e5317425b96a90ad295d01377dfcf1f5efdc" @@ -5587,10 +5595,10 @@ eslint-webpack-plugin@^2.5.2: micromatch "^4.0.2" schema-utils "^3.0.0" -eslint@^7.21.0: - version "7.21.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.21.0.tgz#4ecd5b8c5b44f5dedc9b8a110b01bbfeb15d1c83" - integrity sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg== +eslint@^7.22.0: + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.22.0.tgz#07ecc61052fec63661a2cab6bd507127c07adc6f" + integrity sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg== dependencies: "@babel/code-frame" "7.12.11" "@eslint/eslintrc" "^0.4.0" @@ -5609,7 +5617,7 @@ eslint@^7.21.0: file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" - globals "^12.1.0" + globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" @@ -5617,7 +5625,7 @@ eslint@^7.21.0: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.20" + lodash "^4.17.21" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -6468,6 +6476,13 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globals@^13.6.0: + version "13.6.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.6.0.tgz#d77138e53738567bb96a3916ff6f6b487af20ef7" + integrity sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ== + dependencies: + type-fest "^0.20.2" + globby@^11.0.1, globby@^11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" @@ -6548,6 +6563,11 @@ gulp-plumber@^1.2.1: plugin-error "^0.1.2" through2 "^2.0.3" +gulp-rename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c" + integrity sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ== + gulp-typescript@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/gulp-typescript/-/gulp-typescript-5.0.1.tgz#96c6565a6eb31e08c2aae1c857b1a079e6226d94" @@ -12805,6 +12825,11 @@ type-fest@^0.18.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.21.2: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -13739,10 +13764,10 @@ yorkie@^2.0.0: normalize-path "^1.0.0" strip-indent "^2.0.0" -zmi-nerd@^1.2.2-0: - version "1.2.2-0" - resolved "https://registry.yarnpkg.com/zmi-nerd/-/zmi-nerd-1.2.2-0.tgz#e161089254923eb91e620a91b0a37a1ae24718cd" - integrity sha512-T+biclqXBEaXeDknJjQrOpsJNoYNx7tRzFC/4+9Rz036spCDtf29YvvDOUwORjy1cta+9zD4iLzyB3jiOCX4+Q== +zmi-nerd@^1.2.2-1: + version "1.2.2-1" + resolved "https://registry.yarnpkg.com/zmi-nerd/-/zmi-nerd-1.2.2-1.tgz#7ddc9eef1468293a053549db86a952689a410792" + integrity sha512-qRK98RPwHZTtMa//PE++3XxAKkqphnaB6YCJxqr85A6u0Sk/AF39Ts/qyHF3IH5XDca9S54wEsD7ipPjelH6fw== dependencies: "@babel/core" "^7.13.8" "@babel/plugin-proposal-class-properties" "^7.13.0"