Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@shuvi/utils

shuvijs780MIT1.0.63TypeScript support: included

null

readme

Shuvi

Meta Framework to create applications quickly.

Features

  • Automatic transpilation and bundling (with webpack and babel)
  • On demand transpilation / Hot code reloading
  • Code splitting for every pages
  • Server-Side Rendering

Contributing

See CONTRIBUTING.md for more information on what we're looking for and how to get started.

Credits

Some implementation of shuvi.js are inspired by existing projects, such as next.js and umi.js. Thanks for them.

changelog

1.0.63 (2025-04-24)

Features

1.0.62 (2025-01-06)

Performance Improvements

  • lazy prefetching to avoid negative performance impact for the first page (#602) (bcf880f)

1.0.61 (2024-11-13)

Bug Fixes

  • appConfig data race condition during concurrent requests (c04d158)

1.0.60 (2024-09-18)

Features

  • downgrade fatal crash error for <Link> component (#596) (1205fc5)

1.0.59 (2024-08-21)

Bug Fixes

1.0.58 (2024-07-18)

Performance Improvements

  • define 'typeof window' in webpack to eliminate deadcode (901dd10)

1.0.57 (2024-07-15)

Bug Fixes

  • shuvi lint --file should work now (200942e)

1.0.56 (2024-07-01)

Features

  • add support for npm packages using {"type": "module"} (64ef9e7)

1.0.55 (2024-07-01)

Bug Fixes

  • fork-ts-checker-webpack-plugin options breaking changes (#588) (655b84f)

Features

1.0.54 (2024-06-26)

Features

  • support TypeScript 5 with type checking during build (#587) (4568156)

1.0.53 (2024-06-13)

Bug Fixes

  • toolpack: correct the filename of asset/resource (#583) (7d1f80d)

1.0.52 (2024-06-10)

Bug Fixes

  • router: allow empty route.path for correct catchAll ranking (#582) (a106fee)
  • suppport node v18+ (3dc9806)

1.0.51 (2024-03-22)

Bug Fixes

  • enable console.error for production mode (#581) (27c6ee8)

1.0.50 (2024-03-20)

Bug Fixes

  • ctx.error with fatal options should work with the async loader function (#580) (1b7d597)

1.0.49 (2024-03-19)

Features

  • exit render when running into fatal-error (f645b2e)

1.0.48 (2024-02-19)

Features

  • add plugin name for shuvi-user-app and shuvi-user-server (#579) (3495971)

1.0.47 (2023-12-28)

Features

1.0.46 (2023-12-28)

Features

  • move setupAppConfigMiddleware to platform-web (#574) (876d946)

1.0.45 (2023-12-26)

Bug Fixes

Features

  • add getAppConfig hook to serverPlugin (6568a2c)

1.0.44 (2023-12-12)

Bug Fixes

  • passing request to server app (7672740)

1.0.43 (2023-12-06)

Features

  • pass request to appContext hook (502a248)

1.0.42 (2023-10-13)

Bug Fixes

  • fix wrong history when using client side loader redirect (177742b)

1.0.41 (2023-09-22)

Bug Fixes

  • trace: fix trace logic & add e2e test (#562) (71c0bf1)

1.0.40 (2023-09-22)

Bug Fixes

  • trace: fix trace logic & add e2e test (#562) (71c0bf1)

1.0.39 (2023-09-21)

Bug Fixes

  • webpack: use default splitChunks for server bundle (#560) (94f077c)

Features

  • Update chunk naming rules and fix generateFilesByRoutId bug (796fca6)

1.0.38 (2023-09-11)

Bug Fixes

  • loader: always log loader error at server side (#557) (a1e297b)

Features

  • pass router to appContext hook (4e464e9)

1.0.37 (2023-08-24)

Bug Fixes

  • return plain object from useLoaderData (6eba0c3)

1.0.36 (2023-08-04)

1.0.35 (2023-07-20)

1.0.34 (2023-07-19)

Features

1.0.33 (2023-07-14)

Features

  • add metrics point: SHUVI_SERVER_RUN_ASSET_MIDDLEWARE, SHUVI_SERVER_RUN_MIDDLEWARE_ROUTES and SHUVI_SERVER_RUN_API_MIDDLEWARE (adeb63e)

1.0.32 (2023-07-07)

Bug Fixes

  • revert external built-in packages (1470111)

1.0.31 (2023-07-05)

Bug Fixes

Features

1.0.30 (2023-07-05)

Bug Fixes

Features

1.0.29 (2023-06-09)

Bug Fixes

1.0.28 (2023-05-22)

Bug Fixes

  • set the default cacheGroups settings (914e6f0)

1.0.27 (2023-05-12)

Bug Fixes

1.0.26 (2023-05-08)

Bug Fixes

  • useParams will give the same result no matter where it is used (#526) (49032df)

1.0.25 (2023-05-04)

Features

1.0.24 (2023-04-27)

1.0.23 (2023-04-20)

Features

1.0.22 (2023-03-30)

Features

  • allow configFile set to false to skip reading shuvi config file (#513) (07f595f)
  • useRouter support Destructuring (#512) (0338762)

1.0.21 (2023-03-24)

Bug Fixes

  • fix the calculation of hmr (114af40)

Features

  • analyze: apply analyzer to all targets & add webpack stats output (#511) (62cc3c4)

1.0.20 (2023-03-14)

Bug Fixes

  • fix parameters of getRawRoutesFromDir (#509) (443f238)

1.0.19 (2023-03-10)

Bug Fixes

1.0.18 (2023-02-28)

Features

  • set experimentalDecorators and emitDecoratorMetadata via tsconfig (0933cfb)

1.0.17 (2023-02-24)

Bug Fixes

  • fullpage reload because loader fails to do hmr (42a24a0)
  • loadble props may not exist (2be29e7)

1.0.16 (2023-02-17)

Features

  • init the trace module and add hmr event to json and telemetry (bff9258)

1.0.15 (2023-02-09)

Bug Fixes

  • removing extra slash in hmr path (ece2636)

1.0.14 (2023-02-09)

Bug Fixes

  • hmr not working with custom publicPath that has a different protocol (fc8d4f8)

Features

  • new option "conventionRoutes.include" (bc47b78)

1.0.13 (2023-02-06)

Bug Fixes

  • fix the logic of resolveUser to adapt to monorepo (56864c6)

Features

1.0.12 (2023-01-19)

Bug Fixes

  • remove extension of custom-app, custom-server and custom-error in @shuvi/app/user (#490) (e4a4b8f)
  • rename to doura (cd0fdcb)

Features

  • add IHtmlDocument type at shuvi-runtime-server (#491) (26b3240)

1.0.11 (2023-01-04)

Bug Fixes

  • ignore ssr-only runtime modules on server side when setting ssr to false (22dd7ca)

1.0.10 (2022-12-30)

Bug Fixes

  • ignore app.js on server side when setting ssr to false (d548634)
  • typo: change typeScriptPath to typescriptPath (a6440f0)

1.0.9 (2022-12-21)

Bug Fixes

  • loader: pathname, query and params at loaderContext should be same at different layers of route (9a71ca0)
  • plugin: use d.ts to distinguish between path and module (e6139cb)

1.0.8 (2022-12-14)

Bug Fixes

  • release-swc: use stable docker image (5c84257)
  • use esm for model runtime (0710529)

Features

  • telemetry: add EVENT_BUILD_FEATURE_USAGE and EVENT_PACKAGE_DETECTED (#477) (616b44d)

1.0.7 (2022-12-05)

Bug Fixes

  • add meta info and fix get telemetry logic (#475) (9eb6b81)

1.0.6 (2022-12-05)

1.0.5 (2022-12-02)

Features

1.0.4 (2022-11-28)

Bug Fixes

  • swc: page and loader has same depends (3bdba94)

Features

  • disable spiltChunks at dev to prevent preload error (#471) (ccc5647)

1.0.3 (2022-11-10)

Bug Fixes

  • service: fix external helper (c78629b)

1.0.2 (2022-11-04)

Bug Fixes

  • ErrorBoundary: fix the issue that useApp returns null at ErrorBoundary (829c88b)

Features

  • always serve files public dir (c816dca)
  • platform-web: redirect support external url (90f1469)
  • router: add skipGuards option for push/replace (c2cfc47)
  • serverPlugin: add sendHtml hook (c405006)
  • service: catch unhandledRejection (0fc25c1)
  • tsconfig fast refresh (52e0edc)

1.0.1 (2022-10-27)

Bug Fixes

  • add catch for asset middleware (#459) (e56fe8d)
  • rename exported shuvi-type-extensions files (84750ea)

Features

  • service: support cookies (d9be84d)

1.0.0 (2022-10-21)

Bug Fixes

Features

1.0.0-rc.20 (2022-10-17)

Bug Fixes

  • pass pluginContext to preset (ee13c18)

1.0.0-rc.19 (2022-10-12)

Bug Fixes

  • build (a5b864a)
  • build error-overlay and its deps (98bb5a7)
  • extract loader by swc (972236e)
  • false positive of api and page conflicting (506bc65)
  • hook: seriesHook should discard handlers that returns undefined (#441) (6085f19)
  • loader can't update when add/remove (277810c)
  • only output html when ssr=false (ac9d032)
  • rename shuvi_page_loader to page_pick_loader (85e5ccd)
  • replace start with serve (9d3d7ab)

Features

  • error when return undefined (f74e80d)
  • file builder ignore file update in routes (7d60810)
  • make createPlugin contextless (5f2474f)
  • ts auto install (1632567)

1.0.0-rc.18 (2022-09-19)

Bug Fixes

  • change to modifyHtml to AsyncSeriesHook (9521e22)
  • e2e: wait first build (44a6076)
  • fix the repeat log (03f11f9)
  • make sure bundler has finished build before running any middlewares (ef064bc)
  • output target of shuvi.config.tst got overwrited by user tscoonfig.json (a9d5d27)

Features

1.0.0-rc.17 (2022-09-13)

Features

1.0.0-rc.17 (2022-09-13)

Features

1.0.0-rc.16 (2022-09-13)

Bug Fixes

1.0.0-rc.15 (2022-09-09)

Bug Fixes

  • handle the errorType which is overwrited (965683b)
  • html-render: prevent handlePageRequest from being called repeatedly (#425) (f78252c)

Features

  • add nomodule attr for polyfills (3ca1f4e)
  • do not show error code for none-ssr page (1b6e102)
  • remove 'middleware' file convention (#427) (85e639a)

1.0.0-rc.14 (2022-09-05)

Bug Fixes

  • fix props typing of Link component (c334caf)
  • remove filepath from IRoute (efeccad)
  • safari disable cache doesnot affect preloaded content (3eff1e2)
  • use require instead of import (5dd8f9e)

Features

  • ts prompt & include jsconfig to ts template (95349c2)

1.0.0-rc.13 (2022-09-02)

Bug Fixes

  • append hash to common chunks in production (8152828)
  • hotUpdateMainFilename confict (9d62ebc)

Features

1.0.0-rc.12 (2022-08-30)

Bug Fixes

1.0.0-rc.11 (2022-08-30)

Bug Fixes

Features

1.0.0-rc.10 (2022-08-29)

Bug Fixes

  • check issuer for framework chunks (9890620)
  • make e2e test stable (9e8e8f9)

1.0.0-rc.9 (2022-08-29)

Bug Fixes

  • cannot pass options (55321ba)
  • chunks filename (531aea9)
  • iframe should not be rendered when no error occurs (#420) (8251361)
  • webpack-wait-file-builder: fix clearing timer at onInvalid (#419) (8540ff0)

Features

  • hook: add AsyncSeriesHook & AsyncSeriesBailHook (61b4eae)

1.0.0-rc.8 (2022-08-26)

Bug Fixes

  • only throw error when it is first render (74a2e51)

1.0.0-rc.7 (2022-08-25)

Bug Fixes

1.0.0-rc.6 (2022-08-25)

Bug Fixes

  • add @shuvi/runtime alias to typescript.paths (dd111cf)
  • build: remove unused import (0427b20)
  • clear cache (2a3671c)
  • close watching when destory (36b39cd)
  • fix the dll test case (9b2a083)
  • host default to 0.0.0.0 when serve (cffb819)
  • make test more reliable (a8eaacc)
  • make webpack.compile wait until fileBuilder is finished (1b1bc7d)
  • only throw server error (bf45676)
  • overlay: parse sourceMap in advance (36ec502)
  • react devtools not working (bbeb50a)
  • remove uncessary invalid call (580bd40)
  • safari bug of link-preload memory ccache (cb66849)
  • support doman in publicPath (2a92a15)
  • unreliable e2e case (7c40639)
  • use use-sync-external-store to work with react concurrence (1d019c6)

Features

  • able to control the order between user plugins and internal plugins (7cc231a)
  • change to remix's style of conventional routes (8dae00b)
  • display the source of client error (c42ab54)
  • error overlay (8f79851)
  • server render error (7092c3d)
  • simplify proxy config (5924923)
  • use shake-exports of swc-loader to generate page-laoders (0517281)

1.0.0-rc.5 (2022-08-10)

Bug Fixes

Features

1.0.0-rc.4 (2022-08-02)

Bug Fixes

Features

  • fileBuilder: file update should be skipped if content has no change (b8801e6)
  • remove inactive pages from hmr (99fa6a3)
  • remove moduleinfo from client (1e744e0)
  • update swc (233a498)
  • use new file manage (1a8231c)

1.0.0-rc.3 (2022-07-29)

Bug Fixes

Features

1.0.0-rc.1 (2022-07-15)

Bug Fixes

  • missing peerDependencies (ba0b92c)
  • modifyRuntimeConfig be invoked multilple times (02b13e4)
  • release script (92718d8)

1.0.0-rc.0 (2022-07-15)

Bug Fixes

  • 🐛 disable highlight in test environment (0baf87f)
  • 🐛 update application path (3b608d9)
  • 404page FOUC (a7bd021)
  • add esm to files (f89c89e)
  • allow config rootDir in config file (1b66491)
  • allways return array for repeatable params (b0d9541)
  • always sort filesystem routes (a650ea2)
  • always try to add the default head tags (#29) (4b9feb5)
  • asyncEntry conflict with shuvi_ssr_public_path (5e39e77)
  • bug where 404 page is not returning 404 statusCode (#145) (bc58880)
  • build (df22d87)
  • build not working (1cb9ffb)
  • build step (4a3a0b3)
  • check before acceccing name (18abebb)
  • check for empty publicPath (03dfac3)
  • check matches (3141e9a)
  • check matches.length (bef8cba)
  • check public dir existence (79b885c)
  • check title element (47505e9)
  • ChunkNamesPlugin: fix "Conflict: Multiple assets emit different content to the same filename" (75a356f)
  • client hmr with 3rd parties library (2f92f93)
  • client js filename (6133f32)
  • correct alias plugin options (f2245db)
  • correct package.json (3f829d4)
  • correct package.json files (55df53b)
  • createFile test (#300) (2b5fde3)
  • ctx.error on first page (87bcf66)
  • custom port not working (d136b41)
  • deepmerge: should not mutate the input object [#76] (#77) (e1508c6)
  • donnot log response as a error (57dd477)
  • e2e test (20a51d0)
  • e2e test (b148127)
  • e2e test; typing (93f98be)
  • e2e tests (ca3e2f7)
  • e2e: module path (8f2eacd)
  • eliminate unnecessary rerender of parent route component (#289) (a92c8b7)
  • ensure chunk is js extension (da4a47c)
  • err as any (415b816)
  • extrnalize runtime-config to get it work in server side (5dd5381)
  • fix array is not reactive (19b2042)
  • fix broken when there are two shuvi (b1761b2)
  • fix dead code elimination not working for client entry (0cbec25)
  • fix extra file being build with spa target (5a6bb13)
  • fix join path break http protocol (80f0b32)
  • fix loader to not crossing compiler (c18442d)
  • fix module-replace re-replace a module when rebuild module (5f16058)
  • fix not to replacing module repeatedly (d0432c2)
  • fix re-render error when appContainer is removed (8947bd9)
  • fix react-fast-refresh not working (3330c18)
  • fix req.headers is undefined (8dc0496)
  • fix routeChangeComplete not emitting (c167db0)
  • fix wrong filename provided to launchEditor (0439666)
  • getRuntimeConfig is empty (7107d1e)
  • hash router href is not hashed (b914454)
  • hmr for pages (f5f0491)
  • hmr not working (421e4aa)
  • hmr while navigating (df159c4)
  • HMR: fix upexpected page reload (e7fa348)
  • htmlescape attrs except innerHTML (3064295)
  • ignore ingnoreBuildError in dev (d354a70)
  • keep userConfig untouched (#12) (d9afc39)
  • loader: minor bug fixes (#337) (b6debc1)
  • minor fixes (3b24b1f)
  • module path (b26bf2c)
  • module path in .shuvi (95bf694)
  • module-replace-plugin not work for new created module (63d7730)
  • module-replace-plugin: compatibility with webpack@5 cache (#114) (27b8494)
  • move coreRuntime and runtime order to top (#134) (f6f15aa)
  • move ts-checker to browser webpack (#296) (3dad6fc)
  • on emit routeChange event when path change (7b636b5)
  • only GET method for page request (#138) (56d31fd)
  • only run fixtures test against dir (2471a02)
  • optional params warning (27525ef)
  • output filename (#116) (59fcf87)
  • output html (3f8d478)
  • pass currentRoute by context (#65) (bd0c328)
  • path stringify (29dd530)
  • platform-core: separate exports to make runtimeConfig work at runtimePlugin (#188) (e83fb2a)
  • platform-core: workflow error (1ab805c)
  • platform-mp warning (#278) (19d97dc)
  • platform-mp: minor fixes (#224) (33e9111)
  • plugin can't access config and paths from api (e8bb9ac)
  • plugin HMR (e2f5ca3)
  • plugin hmr (#141) (793bf6a)
  • prefetch (4504761)
  • prefetch test (5529c61)
  • Prefetch test with SPA (a98284a)
  • prevent route id from conflicting with each other (6224e1c)
  • publicPath not set on server (c72f463)
  • remove duplicated js ext (1489117)
  • remove FOUC style when no css get imported (80af67c)
  • remove unnecessary if condition (015c94e)
  • remove useUnknownInCatchVariables (fdb6dd1)
  • render options is undefined (7eb9583)
  • resolve react-router to internal deps (7006e90)
  • resolveLocal unexpectedly import cjs (02bd497)
  • routeChangeComplete not fired (1c0f288)
  • router is undefined in app.js (57956f5)
  • router: add path-to-regexp back (6a2266a)
  • service: fix removeExt (#192) (a82cf8f)
  • service: fix version of '@vue/reactivity' (#202) (4644140)
  • set default head tags in render (f87c144)
  • shuvi: restore platform resolving logic (#186) (c2524b4)
  • spa default head tags (4f0319d)
  • swc not outputing esm (3d25364)
  • swc-loader: export to commonjs (#218) (cafac6d)
  • test (6ec2ba4)
  • test/utils (4610d23)
  • test/utils (f7a3f13)
  • test: duplicate manual mock found: fs (986b505)
  • test: getCodeSnippet (a547967)
  • test: normalizeRoutes tests (2637886)
  • throw error when loadConfig failed (51eb327)
  • toolpack: dont include srcDirs in webpack exclude (#1) (586839e)
  • tree shaking is broken on dynamicc import (c9a1e0f)
  • ts build (ac016ef)
  • ts type checking error report (6dc532f)
  • types (007bc2d)
  • types (40aae74)
  • types (a5834d0)
  • typescript and sacc/scss support (df290f3)
  • typing (97183d4)
  • typing (eab0dcd)
  • typing (3c21c27)
  • typings (3b2105c)
  • typo (0a52b8a)
  • typo (#6) (d1d8a78)
  • typo(#176) (510eee3)
  • update dependency version and add missing dependency (83b49f4)
  • update package.json add publish file lib esm (#191) (c361f62)
  • use ctx.request.path instead of ctx.url for matchPathname (7b69aec)
  • use exact version (68ae95f)
  • use module path for runtimeConfig (014072f)
  • use user-customized app in client render (241d005)
  • useFileByOrder github action test (257cb33)
  • useLoaderData: add useEffect cleanup function & getInitialProps deprecating message (6e913e5)
  • using mjs in nodejs env (28d842b)
  • webpack start watcher too ealry (0173772)
  • yarn.lock (#148) (95a6c04)

Features

  • style (6cb6726)
  • tree compare (4190716)
  • @shuvi/app: organize exports (#199) (f348245)
  • 🎸 add --analyze option to shuvi build command (0f8a603)
  • 🎸 add inspect command (2a04e4e)
  • 0908 cli (7486d04)
  • 1029 service (390f40f)
  • 1212 plugins (4964e79)
  • accept function module as a plugin (2b3661b)
  • add back package @shuvi/types (ebb0cd3)
  • add bundlerOutput api (e417db0)
  • add clean (ce824d5)
  • add config "middlewareRoutes" (33d58d0)
  • add cwd options (7839e2e)
  • add getConfig hook (c8c54b3)
  • add hooks and event (9a86edc)
  • add loader and useLoaderData (#276) (656b139)
  • add modifyDevMiddlewareOption hook (0bede4d)
  • add pageData hook (4a8e7b0)
  • add phase to modifyConfig (8d51536)
  • add presets option (912d9a0)
  • Add proxy to Server (ad5d694)
  • add query to router (c7e84af)
  • add redirect fn in AppComponentContext (1528fa5)
  • add redirect method in getInitialProps context (f75111b)
  • add renderToHTML hooks (368a115)
  • add router event (f6b928d)
  • add srcDirs option (a238cd5)
  • addAppService (7d44cff)
  • addResource (6b9eb29)
  • adjust platform plugin (1a948d1)
  • adllow plugin to modify config by modifyConfig (#70) (e49ee30)
  • allow set routes through config file (415b05c)
  • api routes (9455cf5)
  • app [wip] (e567517)
  • arrange dependencies to make sure every package depends the required packages correctly (#204) (dcd27ab)
  • build (beac13f)
  • cache directory (#118) (7e3d3ad)
  • cli: serve command (9aad7ee)
  • compile route on demand (715bfd8)
  • component: FileSelector (91a7693)
  • conventional middleware (69afa16)
  • createFile: support async content (5628796)
  • createplugin type (001fd21)
  • csr compatiable Head element (8d251f5)
  • css support (efa2d9a)
  • custom document phase (0be098b)
  • dep-free of react and react-dom (6266694)
  • detect if port is being used (f195c17)
  • document and render (b4c3336)
  • DomEnvPlugin (8544ba9)
  • dynamic publicPath (b0803ff)
  • dynamic ssr (07c6e61)
  • dynamic type definition for @shuvi/app (eb0e416)
  • emit afterBuild event (#71) (07bd8c8)
  • enable incremental mode of fork-ts-checker-webpack-plugin (0b4e015)
  • error page (0edec65)
  • error.js (dadf77f)
  • experimental feature - dynamicdll (d02c5d5)
  • expermental: RN-style resolver plugin (2e52a2a)
  • export "useHistory" and "useRouteMatch" (f0627ce)
  • export "withRouter" (5df8130)
  • export App to allow user to custom app.js (#266) (c82f84d)
  • export cli node api (cd5d956)
  • export phase constants (0532324)
  • export useLocation and useParams (b5e54ec)
  • expose pluginApi.clientManifest (0f30fcb)
  • file-manager: run by dependency order (27ab25f)
  • full IE11 polyfill (63856fd)
  • getAppComponent hook (9a78eec)
  • getInitialProps (db118ed)
  • hook: add internal hook setup to addHooks dynamically (#242) (e91418c)
  • hot client (f55b34b)
  • ignoreBuildError (3cfedc5)
  • implement bootstrap file to support Module Federation (7197109)
  • improve reliability of ModuleReplacePlugin (ac40d46)
  • Link: add prefetch (5c04f5b)
  • load environment variables from .env file (a0b6771)
  • loader: always return the values from useLoaderData (fe3e8d6)
  • loader: call loader when route resolving (82f93e5)
  • loader: new strategies to execution loaders (8c1ef4d)
  • make addAppFile root as files/ (6946241)
  • make Api to receive a partial config (70fb076)
  • make css modules work in ssr (96246e9)
  • make router-api work with mp (45aeacd)
  • make runtimeConfig work with None-SSR (4fd0696)
  • make services reactive (9f737b9)
  • make shuvi to receive a partial config (a5031aa)
  • middleware (4a973cc)
  • middleware (8436378)
  • middleware back (39fc289)
  • middlwareRoutes (29f000a)
  • modifyHtml hook (68f02de)
  • move core to runtime-core (90c2dee)
  • move modifyHtml after onDocumentProps (84a9c89)
  • move ssr to platform-web (6949e10)
  • mp: getInitialProps (c87fcf4)
  • mp: complete bundler configs to support component demo (97a27b2)
  • navigation flow (9f2981b)
  • only allow object literal for runtimeConfig (2676a49)
  • overwrite public path on client (4c73355)
  • pass appContext into server:getPageData hook (9a44420)
  • pass query and params to app.getInitialProps (14e3014)
  • pass renderCtx to document hooks (e776a55)
  • platform-mp: compatible Head getPageData App API (fdf8b02)
  • platform-mp: refactor platform class to support multiple targets (579e6e2)
  • platform-taro: make project available (c7dd780)
  • platform-taro: split chunks (#169) (842c573)
  • platform-web-react: add alias @shuvi/service (#189) (a2141fc)
  • platform-web: add dependency @shuvi/platform-web-react (#190) (45d7a49)
  • platform-web: move codes from runtime-core to the new platform-web (#180) (cc94569)
  • plugin: add cliPlugin (8008097)
  • plugin: add support for extending plugin types (1689241)
  • plugin: compare object with tree (2ab5fb1)
  • plugin: custom plugin resolving (0ddc3d7)
  • polyfill (eb32d90)
  • pracel css (150cb89)
  • programmatic entry (74fc5e1)
  • project: refine createFile method (4bd8132)
  • publicDir option (5a47711)
  • react-fs (f47eaf2)
  • react-refresh (a624039)
  • reexport @shuvi/service (06c7e51)
  • refactor plugin in shuvi.config.js (#262) (ba597d9)
  • release script (1d51292)
  • remove appContext statusCode (aa979fa)
  • remove clientManifest from service (c49dfa5)
  • remove custom-app (70fa2a3)
  • remove libs (7d5527f)
  • remove middleware last (1f88154)
  • remove path prefix for accessing of public dir (3bf2a0e)
  • remove reselector (96aef18)
  • remove serverPlugin from cliPluginContext (#257) (afcfddf)
  • rename routes to pageRoutes (d94147d)
  • renderToTHML (ccb269d)
  • reset types definitions and dependencies for Application class (#183) (24614b1)
  • resolve by target (4783a40)
  • resolve ext by target (0e5de1b)
  • router: expose routes property (4e0bed8)
  • router: implement histroy (#59) (a84062e)
  • router: support match * (51f603f)
  • routes (d6b8b2a)
  • routes (fb5e9b2)
  • routes dir (243a238)
  • runtime plugin (4d42157)
  • runtime-core: move the runtime-core setup logic into shuvi (#164) (b15f5e0)
  • serve static files by public dir (d3acd92)
  • server middleware and koa rewrite (42979e6)
  • server render function (#144) (825f366)
  • server.js for server-only hooks (#16) (d2528f0)
  • serverMiddleware order (6c6d3fa)
  • service: add createFile & move routes, apiRoute and middlewareRoutes into platform-web (2ae2680)
  • service: add typescipt and esmodule support for shuvi.config.js (#228) (3ca7b2a)
  • service: export all the constants (#196) (fee965d)
  • service: move custom server.js feature into platform (a920930)
  • service: refactor server and api (4c4cb46)
  • set 404 statusCode for 404 page (1730f10)
  • setup option (7b6f6c1)
  • shuvi-app: basic structure refactoring (2036908)
  • shuvi/router (7ae1f2d)
  • shuvi/router-react (#46) (0ede2ed)
  • shuvi: absolute output path (72f6f88)
  • shuvi: add serverMiddleware hook (#195) (50ab06d)
  • shuvi: organize exports (ee7745b)
  • spa output target (920f65f)
  • spread rest props into route component (c60f48f)
  • state plugin (9ce3cbb)
  • store (0fec90e)
  • store plugin effect (5b0956a)
  • suppoert error and redirect in loader (d3997b7)
  • support getInitialProps for App Component (0863def)
  • support paths for tsconfig and jsconfig (f8db1a6)
  • support resolving for ts files under /.shuvi in non-ts project (ea1b9fa)
  • support style (3d312c8)
  • swc loader (ff26b03)
  • swc workflow (6328bf8)
  • swc-loader can process runtimePlugin (2b548d0)
  • toolpack: synchronize next swc options (4ee1efd)
  • types: getRoutes now returns IAppRouteConfig without private properties (#201) (ef7efb8)
  • upgrade to Webpack5 (3178fdc)
  • use router to compose middlewares (c9ee556)
  • webpack external (ec1ea9c)
  • webpackHelpers with addExternals fn (56c66ff)

Reverts

  • Revert "refractor: move matchRoute to core (#47)" (#48) (8708edd), closes #47 #48

1.0.0

core

  • rename boostrap.js to entryContents.js
  • remove type ISpecifier
  • remove helper moduleExport
  • change addAppExport(string, ISpecifier) to addAppExport(string, string)

router

https://docs.google.com/document/d/1g3KPpEdl9DILftI22qWKUQIVbAxtkoGKSTbEZAFjxDg/edit#

app

  • remove parsedUrl from req
  • add query and pathname to req