mirror of
https://github.com/zhigang1992/docz.git
synced 2026-04-24 05:06:09 +08:00
chore: some updates and improvements
This commit is contained in:
@@ -12,8 +12,7 @@
|
||||
"prop-types": "^15.6.1",
|
||||
"react": "^16.4.0",
|
||||
"react-dom": "^16.4.0",
|
||||
"react-emotion": "^9.1.3",
|
||||
"react-router-dom": "^4.2.2"
|
||||
"react-emotion": "^9.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-plugin-emotion": "^9.0.1"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"lerna": "^2.11.0",
|
||||
"libundler": "^1.6.4",
|
||||
"npm-run-all": "^4.1.3",
|
||||
"prettier": "^1.11.1",
|
||||
"prettier": "^1.13.0",
|
||||
"trash-cli": "^1.4.0",
|
||||
"tslint": "^5.10.0",
|
||||
"tslint-config-prettier": "^1.13.0",
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"tslint": "tslint --project ."
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.0.0-beta.49",
|
||||
"@babel/core": "7.0.0-beta.49",
|
||||
"@babel/runtime": "^7.0.0-beta.49",
|
||||
"@mdx-js/loader": "^0.9.0",
|
||||
"@mdx-js/mdx": "^0.9.0",
|
||||
@@ -33,7 +33,7 @@
|
||||
"chalk": "^2.4.1",
|
||||
"chokidar": "^2.0.3",
|
||||
"connect-history-api-fallback": "^1.5.0",
|
||||
"deepmerge": "^2.1.0",
|
||||
"deepmerge": "^2.1.1",
|
||||
"detect-port": "^1.2.3",
|
||||
"express": "^4.16.3",
|
||||
"fast-glob": "^2.2.2",
|
||||
@@ -48,7 +48,7 @@
|
||||
"koa-static": "^4.0.3",
|
||||
"load-cfg": "^0.0.1",
|
||||
"lodash.get": "^4.4.2",
|
||||
"prettier": "^1.12.0",
|
||||
"prettier": "^1.13.0",
|
||||
"react-dev-utils": "^5.0.1",
|
||||
"react-hot-loader": "4.2.0",
|
||||
"remark-frontmatter": "^1.2.0",
|
||||
@@ -65,7 +65,7 @@
|
||||
"unist-util-remove": "^1.0.0",
|
||||
"unist-util-visit": "^1.3.1",
|
||||
"url-loader": "^1.0.1",
|
||||
"webpack": "^4.8.3",
|
||||
"webpack": "^4.9.1",
|
||||
"webpack-chain": "^4.8.0",
|
||||
"webpack-manifest-plugin": "^2.0.3",
|
||||
"webpack-serve": "^1.0.2",
|
||||
@@ -83,7 +83,7 @@
|
||||
"@types/fs-extra": "^5.0.2",
|
||||
"@types/html-webpack-plugin": "^2.30.3",
|
||||
"@types/lodash.get": "^4.4.3",
|
||||
"@types/node": "10.1.2",
|
||||
"@types/node": "10.1.3",
|
||||
"@types/prettier": "^1.12.4",
|
||||
"@types/resolve": "^0.0.8",
|
||||
"@types/webpack": "^4.4.0",
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { Plugin } from './Plugin'
|
||||
import { Config as Args } from './commands/args'
|
||||
|
||||
import { isFn } from './utils/helpers'
|
||||
|
||||
export interface Server {
|
||||
close: () => void
|
||||
on: (event: string, cb: (server: any) => void) => void
|
||||
@@ -48,11 +50,13 @@ export class Bundler<C = any> {
|
||||
}
|
||||
|
||||
private reduceWithPlugins(dev: boolean): any {
|
||||
return (config: C, plugin: Plugin) =>
|
||||
plugin.modifyBundlerConfig(config, dev) || config
|
||||
return (config: C, { modifyBundlerConfig }: Plugin) =>
|
||||
modifyBundlerConfig && isFn(modifyBundlerConfig)
|
||||
? modifyBundlerConfig(config, dev)
|
||||
: config
|
||||
}
|
||||
|
||||
private mountConfig(config: C): C {
|
||||
private mountConfig(config: C): any {
|
||||
const { plugins, env } = this.args
|
||||
const dev = env === 'development'
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ export interface BabelRC {
|
||||
babelrc?: boolean
|
||||
}
|
||||
|
||||
export type ModifyBundlerConfig = <C>(config: C, dev: boolean) => C
|
||||
export type ModifyBundlerConfig<C = any> = (config: C, dev: boolean) => C
|
||||
export type ModifyBabelRC = (babelrc: BabelRC) => BabelRC
|
||||
export type OnServerListening = <S>(server: S) => void
|
||||
export type OnPreBuild = () => void
|
||||
@@ -19,17 +19,17 @@ export type OnPostRender = () => void
|
||||
export type Wrapper = <R>(props: any) => R
|
||||
|
||||
export interface PluginFactory {
|
||||
modifyBundlerConfig: ModifyBundlerConfig
|
||||
modifyBabelRc: ModifyBabelRC
|
||||
onServerListening: OnServerListening
|
||||
onPreBuild: OnPreBuild
|
||||
onPostBuild: OnPostBuild
|
||||
onPreRender: OnPreRender
|
||||
onPostRender: OnPostRender
|
||||
wrapper: Wrapper
|
||||
modifyBundlerConfig?: ModifyBundlerConfig
|
||||
modifyBabelRc?: ModifyBabelRC
|
||||
onServerListening?: OnServerListening
|
||||
onPreBuild?: OnPreBuild
|
||||
onPostBuild?: OnPostBuild
|
||||
onPreRender?: OnPreRender
|
||||
onPostRender?: OnPostRender
|
||||
wrapper?: Wrapper
|
||||
}
|
||||
|
||||
export class Plugin {
|
||||
export class Plugin<C = any> implements PluginFactory {
|
||||
public static runPluginsMethod(
|
||||
plugins: Plugin[]
|
||||
): (method: keyof Plugin, ...args: any[]) => void {
|
||||
@@ -52,20 +52,17 @@ export class Plugin {
|
||||
plugins.map(p => get(p, prop)).filter(m => m)
|
||||
}
|
||||
|
||||
public readonly modifyBundlerConfig: ModifyBundlerConfig
|
||||
public readonly modifyBabelRc: ModifyBabelRC
|
||||
public readonly onServerListening: OnServerListening
|
||||
public readonly onPreBuild: OnPreBuild | null
|
||||
public readonly onPostBuild: OnPostBuild | null
|
||||
public readonly onPreRender: OnPreRender | null
|
||||
public readonly onPostRender: OnPostRender | null
|
||||
public readonly wrapper: Wrapper
|
||||
public readonly modifyBundlerConfig?: ModifyBundlerConfig<C>
|
||||
public readonly modifyBabelRc?: ModifyBabelRC
|
||||
public readonly onServerListening?: OnServerListening
|
||||
public readonly onPreBuild?: OnPreBuild
|
||||
public readonly onPostBuild?: OnPostBuild
|
||||
public readonly onPreRender?: OnPreRender
|
||||
public readonly onPostRender?: OnPostRender
|
||||
public readonly wrapper?: Wrapper
|
||||
|
||||
constructor(p: PluginFactory) {
|
||||
this.modifyBundlerConfig = (config: any, dev: boolean) => {
|
||||
return isFn(p.modifyBundlerConfig) && p.modifyBundlerConfig(config, dev)
|
||||
}
|
||||
|
||||
this.modifyBundlerConfig = p.modifyBundlerConfig
|
||||
this.modifyBabelRc = p.modifyBabelRc
|
||||
this.onServerListening = p.onServerListening
|
||||
this.onPreBuild = p.onPreBuild
|
||||
@@ -76,6 +73,6 @@ export class Plugin {
|
||||
}
|
||||
}
|
||||
|
||||
export function createPlugin(factory: PluginFactory): Plugin {
|
||||
export function createPlugin<C = any>(factory: PluginFactory): Plugin<C> {
|
||||
return new Plugin(factory)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import htmlWebpackPlugin from 'html-webpack-plugin'
|
||||
import manifestPlugin from 'webpack-manifest-plugin'
|
||||
import UglifyJs from 'uglifyjs-webpack-plugin'
|
||||
import matter from 'remark-frontmatter'
|
||||
import merge from 'deepmerge'
|
||||
|
||||
import { Config as ConfigObj } from '../../commands/args'
|
||||
import { plugin as mdastPlugin } from '../../utils/plugin-mdast'
|
||||
@@ -18,24 +19,20 @@ const INLINE_LIMIT = 10000
|
||||
|
||||
interface HappypackLoaderParams {
|
||||
id: string
|
||||
plugins?: any[]
|
||||
opts?: BabelRC
|
||||
}
|
||||
|
||||
const happypackLoader = (babelrc: any) => ({
|
||||
id,
|
||||
plugins,
|
||||
opts = {},
|
||||
}: HappypackLoaderParams) => [
|
||||
{
|
||||
id,
|
||||
threads: 2,
|
||||
verbose: false,
|
||||
loaders: [
|
||||
{
|
||||
loader: require.resolve('babel-loader'),
|
||||
query: {
|
||||
...babelrc,
|
||||
plugins,
|
||||
},
|
||||
query: merge(babelrc, opts),
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -46,15 +43,16 @@ const setupHappypack = (config: Config, babelrc: any) => {
|
||||
|
||||
const jsx = loader({
|
||||
id: 'jsx',
|
||||
plugins: babelrc.plugins.concat([
|
||||
require.resolve('react-hot-loader/babel'),
|
||||
require.resolve('babel-plugin-react-docgen'),
|
||||
]),
|
||||
opts: {
|
||||
plugins: [
|
||||
require.resolve('react-hot-loader/babel'),
|
||||
require.resolve('babel-plugin-react-docgen'),
|
||||
],
|
||||
},
|
||||
})
|
||||
|
||||
const mdx = loader({
|
||||
id: 'mdx',
|
||||
plugins: babelrc.plugins,
|
||||
})
|
||||
|
||||
config.plugin('happypack-jsx').use(HappyPack, jsx)
|
||||
@@ -179,7 +177,17 @@ export const createConfig = (babelrc: BabelRC) => (
|
||||
)
|
||||
|
||||
config.resolve.extensions
|
||||
.merge(['.web.js', '.mjs', '.js', '.json', '.web.jsx', '.jsx', '.mdx'])
|
||||
.merge([
|
||||
'.web.js',
|
||||
'.mjs',
|
||||
'.js',
|
||||
'.json',
|
||||
'.web.jsx',
|
||||
'.jsx',
|
||||
'.mdx',
|
||||
'.ts',
|
||||
'.tsx',
|
||||
])
|
||||
.end()
|
||||
.modules.add('node_modules')
|
||||
.add(srcPath)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import * as commands from './commands'
|
||||
|
||||
export { commands }
|
||||
export { createPlugin } from './Plugin'
|
||||
export { Plugin, createPlugin } from './Plugin'
|
||||
|
||||
@@ -14,7 +14,7 @@ export const babelrc = (args: Config) => {
|
||||
|
||||
return [...(args.plugins || [])].reduce(
|
||||
(obj, plugin) =>
|
||||
isFn(plugin.modifyBabelRc)
|
||||
plugin.modifyBabelRc && isFn(plugin.modifyBabelRc)
|
||||
? merge(obj, plugin.modifyBabelRc(config))
|
||||
: obj,
|
||||
config
|
||||
|
||||
@@ -5,6 +5,7 @@ export const format = (code: string): Promise<string> =>
|
||||
new Promise((resolve, reject) => {
|
||||
try {
|
||||
const result = prettier.format(code, {
|
||||
parser: 'babylon',
|
||||
semi: false,
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
@@ -12,7 +13,7 @@ export const format = (code: string): Promise<string> =>
|
||||
|
||||
resolve(result)
|
||||
} catch (err) {
|
||||
logger.fatar(err)
|
||||
logger.fatal(err)
|
||||
resolve(err)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@sindresorhus/slugify": "^0.3.0",
|
||||
"deepmerge": "^2.1.0",
|
||||
"deepmerge": "^2.1.1",
|
||||
"invariant": "^2.2.4",
|
||||
"loadable-components": "^2.2.2",
|
||||
"pascalcase": "^0.1.1",
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
"fix:tslint": "tslint --fix --project ."
|
||||
},
|
||||
"dependencies": {
|
||||
"deepmerge": "^2.1.0",
|
||||
"deepmerge": "^2.1.1",
|
||||
"find-up": "^2.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/find-up": "^2.1.1",
|
||||
"@types/node": "^10.1.2"
|
||||
"@types/node": "^10.1.3"
|
||||
}
|
||||
}
|
||||
|
||||
27
yarn.lock
27
yarn.lock
@@ -34,7 +34,7 @@
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@7.0.0-beta.49", "@babel/core@^7.0.0-beta.49":
|
||||
"@babel/core@7.0.0-beta.49":
|
||||
version "7.0.0-beta.49"
|
||||
resolved "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.49.tgz#73de2081dd652489489f0cb4aa97829a1133314e"
|
||||
dependencies:
|
||||
@@ -1457,9 +1457,9 @@
|
||||
version "10.0.0"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-10.0.0.tgz#c40f8e07dce607d3ef25a626b93a6a7cdcf97881"
|
||||
|
||||
"@types/node@10.1.2", "@types/node@^10.1.2":
|
||||
version "10.1.2"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz#1b928a0baa408fc8ae3ac012cc81375addc147c6"
|
||||
"@types/node@10.1.3", "@types/node@^10.1.3":
|
||||
version "10.1.3"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-10.1.3.tgz#5c16980936c4e3c83ce64e8ed71fb37bd7aea135"
|
||||
|
||||
"@types/prettier@^1.12.4":
|
||||
version "1.12.4"
|
||||
@@ -3272,6 +3272,10 @@ deepmerge@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.0.tgz#511a54fff405fc346f0240bb270a3e9533a31102"
|
||||
|
||||
deepmerge@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-2.1.1.tgz#e862b4e45ea0555072bf51e7fd0d9845170ae768"
|
||||
|
||||
defaults@^1.0.2, defaults@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
|
||||
@@ -5220,7 +5224,7 @@ jsesc@~0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
||||
|
||||
json-parse-better-errors@^1.0.1:
|
||||
json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
|
||||
|
||||
@@ -6766,9 +6770,9 @@ preserve@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
|
||||
|
||||
prettier@^1.11.1, prettier@^1.12.0:
|
||||
version "1.12.1"
|
||||
resolved "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325"
|
||||
prettier@^1.13.0:
|
||||
version "1.13.0"
|
||||
resolved "https://registry.npmjs.org/prettier/-/prettier-1.13.0.tgz#054de8d5fb1a4405c845d16183f58a2c301f6f16"
|
||||
|
||||
pretty-error@^2.0.2, pretty-error@^2.1.1:
|
||||
version "2.1.1"
|
||||
@@ -9107,9 +9111,9 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0:
|
||||
source-list-map "^2.0.0"
|
||||
source-map "~0.6.1"
|
||||
|
||||
webpack@^4.8.3:
|
||||
version "4.8.3"
|
||||
resolved "https://registry.npmjs.org/webpack/-/webpack-4.8.3.tgz#957c8e80000f9e5cc03d775e78b472d8954f4eeb"
|
||||
webpack@^4.9.1:
|
||||
version "4.9.1"
|
||||
resolved "https://registry.npmjs.org/webpack/-/webpack-4.9.1.tgz#fa7bd738b17fd7f09f37da461b2f5c16c6565f34"
|
||||
dependencies:
|
||||
"@webassemblyjs/ast" "1.4.3"
|
||||
"@webassemblyjs/wasm-edit" "1.4.3"
|
||||
@@ -9121,6 +9125,7 @@ webpack@^4.8.3:
|
||||
chrome-trace-event "^0.1.1"
|
||||
enhanced-resolve "^4.0.0"
|
||||
eslint-scope "^3.7.1"
|
||||
json-parse-better-errors "^1.0.2"
|
||||
loader-runner "^2.3.0"
|
||||
loader-utils "^1.1.0"
|
||||
memory-fs "~0.4.1"
|
||||
|
||||
Reference in New Issue
Block a user