Skip to content
This repository has been archived by the owner on Feb 25, 2022. It is now read-only.

Commit

Permalink
feat(miniapp): standalone miniapp
Browse files Browse the repository at this point in the history
  • Loading branch information
zoy-l committed Mar 13, 2021
1 parent 3b0ca18 commit 5498626
Show file tree
Hide file tree
Showing 55 changed files with 513 additions and 133 deletions.
3 changes: 2 additions & 1 deletion .nerdrc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ export default {
'zmi-webpack',
'zmi-core',
'zmi',
'zmi-preset'
'zmi-preset',
'zmi-miniapp'
]
// sourceMaps: true
} as IConfig
2 changes: 1 addition & 1 deletion docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ HTML 中会生成,

### frameType

- Type: `vue | react | miniApp`
- Type: `vue | react`
- Default: `undefined`

指定运行框架
Expand Down
6 changes: 1 addition & 5 deletions examples/normal-miniapp/.zmirc.ts
Original file line number Diff line number Diff line change
@@ -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'
})
5 changes: 1 addition & 4 deletions examples/normal-miniapp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
4 changes: 2 additions & 2 deletions jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand All @@ -20,6 +18,8 @@ export default {

'!packages/*/fixtures/*/*',

'!packages/zmi-miniapp/src/**/*',

'!<rootDir>/examples/**',
'!<rootDir>/website/**'
])
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
3 changes: 2 additions & 1 deletion packages/zmi-babel-factory/node.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ module.exports = function (opts) {
node: 'current'
},
modules: 'commonjs'
}
},
type: 'node'
},
opts
)
Expand Down
6 changes: 4 additions & 2 deletions packages/zmi-babel-factory/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, any>
debug?: boolean
Expand All @@ -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 = {
Expand Down
3 changes: 3 additions & 0 deletions packages/zmi-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
@@ -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<string, string[]> = {}
Expand All @@ -15,6 +14,7 @@ export default class BabelRegister {
.reduce<string[]>((memo, key) => memo.concat(this.only[key]), [])
.map(slash)
)

require('@babel/register')({
presets: [require.resolve('@zmi-cli/babel-factory/node')],
ignore: [/node_modules/],
Expand Down
5 changes: 3 additions & 2 deletions packages/zmi-core/src/Service.ts
Original file line number Diff line number Diff line change
@@ -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'
Expand All @@ -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'
Expand Down Expand Up @@ -93,7 +94,7 @@ export default class Service extends EventEmitter {
/**
* @desc initial user config
*/
initConifg: IConfig
initConifg: Record<string, any>

/**
* @desc runtime babel
Expand Down
2 changes: 1 addition & 1 deletion packages/zmi-core/src/pluginUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}`)
}
}
}
Expand Down
4 changes: 1 addition & 3 deletions packages/zmi-create-app/fixtures/test-miniapp/.zmirc.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
export default {
miniAppConfig: {
output: 'miniprogram'
}
output: 'miniprogram'
}
5 changes: 2 additions & 3 deletions packages/zmi-create-app/fixtures/test-miniapp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
6 changes: 2 additions & 4 deletions packages/zmi-create-app/fixtures/test-miniapp/tsconfig.json
Original file line number Diff line number Diff line change
@@ -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"]
}
}
8 changes: 0 additions & 8 deletions packages/zmi-create-app/fixtures/test-miniapp/yarn.lock

This file was deleted.

16 changes: 16 additions & 0 deletions packages/zmi-create-app/templates/miniapp/.editorconfig
Original file line number Diff line number Diff line change
@@ -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
15 changes: 15 additions & 0 deletions packages/zmi-create-app/templates/miniapp/.gitignore.tpl
Original file line number Diff line number Diff line change
@@ -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

11 changes: 11 additions & 0 deletions packages/zmi-create-app/templates/miniapp/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"singleQuote": true,
"trailingComma": "all",
"printWidth": 80,
"overrides": [
{
"files": ".prettierrc",
"options": { "parser": "json" }
}
]
}
8 changes: 4 additions & 4 deletions packages/zmi-create-app/templates/miniapp/.zmirc.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import IConfig from 'zmi-miniapp';

export default {
miniAppConfig: {
output: 'miniprogram'
}
}
output: 'miniprogram',
} as IConfig;
6 changes: 3 additions & 3 deletions packages/zmi-create-app/templates/miniapp/package.json.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
justify-content: space-between;
padding: 200rpx 0;
box-sizing: border-box;
}
}
6 changes: 2 additions & 4 deletions packages/zmi-create-app/templates/miniapp/tsconfig.json.tpl
Original file line number Diff line number Diff line change
@@ -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"]
}
}
8 changes: 0 additions & 8 deletions packages/zmi-create-app/templates/miniapp/yarn.lock

This file was deleted.

3 changes: 3 additions & 0 deletions packages/zmi-miniapp/.nerdrc.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default {
disableTypes: true
}
1 change: 1 addition & 0 deletions packages/zmi-miniapp/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# zmi-miniapp
3 changes: 3 additions & 0 deletions packages/zmi-miniapp/bin/zmi-miniapp.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#! /usr/bin/env node

require('../lib/cli')
17 changes: 17 additions & 0 deletions packages/zmi-miniapp/index.d.ts
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions packages/zmi-miniapp/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('eslint-config-zmi')
32 changes: 32 additions & 0 deletions packages/zmi-miniapp/package.json
Original file line number Diff line number Diff line change
@@ -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"
}
}
24 changes: 24 additions & 0 deletions packages/zmi-miniapp/src/cli.ts
Original file line number Diff line number Diff line change
@@ -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)
})
})
Loading

0 comments on commit 5498626

Please sign in to comment.