koot-electron
- 确保开发环境中
package.json
会正确生成并被使用
koot-electron
- 不再将 SPA 的打包目标设定为
electron-renderer
- Electron 最新版中,默认设置下,Renderer 进程无法直接调用 Node.js 模块和方法,需要通过
contextBridge
进行桥接,故不再需要 Webpack 的target
设置
- Electron 最新版中,默认设置下,Renderer 进程无法直接调用 Node.js 模块和方法,需要通过
koot-electron
- 进一步优化相关的打包流程
- 更新文档,添加配置项和更多的开发 TIPS
koot-electron
- Electron 主文件
main.js
可以热更新了
koot-webpack
- 修正一处 SSR 项目中
Asset Module
引用地址错误的问题
koot-webpack
- 修正一处 SPA 项目开发环境中 Template Inject 失效的问题
koot-webpack
- 新配置项
qiankun.extraBase
: 允许 Qiankun 子项目的路由响应更多前缀名
koot-webpack
- 针对
mode === 'development'
扩展babel-loader
配置:generatorOps = { compact: false }
- 针对 Qiankun 子项目优化 Webpack 配置
koot-qiankun
- 现在可以通过
qiankun.entry
定制 Qiankun 子项目的entry
脚本文件 - 修正生产环境中没有添加路由
basename
的问题
koot
- 修正 React SSR 项目开发环境不可用的问题
⚠ 重大改动 ⚠
-
此次更新包含诸多重大改动,对于已有项目的升级,请参阅升级指南
-
Node.js 最低版本要求提升到
14.15.0
-
从
koot
直接引用store
history
localeId
的方式已被完全弃用,请改用getStore()
getHistory()
getLocaleId()
- 0.14:
import { store, history, localeId } from 'koot'; if (localeId === 'zh') { console.log(store.getState()); history.push('/index'); }
- 0.15:
import { getStore, getHistory, getLocaleId } from 'koot'; if (getLocaleId() === 'zh') { console.log(getStore().getState()); getHistory().push('/index'); }
-
内置的多语言处理方式改为 Babel 插件,原 Webpack 插件现已弃用 (#215)
- 原则上对已有项目不会造成影响。如遇问题请进行反馈
-
重大依赖库版本更新。Koot.js 内部已存在部分兼容性处理,原则上对已有项目不会造成影响,如遇到相关问题可点击对应的问题链接进行反馈
-
移除以下依赖包,现在不会默认安装。如有使用需要,请在项目中自行安装
@diablohu/hard-source-webpack-plugin
@hot-loader/react-dom
cache-loader
get-image-colors
isomorphic-fetch
react-hot-loader
yargs
新特性
- 现已支持 Qiankun 微前端子项目开发。请参见文档 Qiankun。
- 现已支持全新的 JSX 转译引擎 (#282)
- 该功能对从 0.15 之前版本升级而来的项目默认关闭,如需开启请参阅 React 官方文档
- 使用
create-koot-app
(koot-cli
) 创建的新项目会使用该新特性
- 新配置项
beforeBuild
- 生命周期方法: 打包即将开始时 (#288)- 详情请参见文档 生命周期
- 新配置项
afterBuild
- 生命周期方法: 打包刚刚完成时 (#288)- 详情请参见文档 生命周期
- 新配置项
reactLegacyRef
- 如果发现更新后 React 的ref
结果有变化,可以尝试打开该选项 - 详情请参见文档 React - 在进行打包、启动开发环境之前,现在会进行 Node.js 版本检查,如果不通过,会终止流程 (#274)
- React 组件的热更新现在改用官方的 Fast Refresh 机制,理论上热更新效率会有提升,原则上对已有项目不会造成负面影响。相关信息请查阅 React 官方讨论帖
- SSR 项目
- 渲染缓存的
get()
和set()
方法现在均新增一个参数,值为本次请求的 KOA Context (#294)
- 渲染缓存的
优化
serviceWorker
的cacheFirst
networkFirst
networkOnly
扩展缓存策略选项,其数组 (Array
) 内现在可以直接传入正则表达式和用以分析请求的函数,请参见文档 Service Worker/扩展缓存规则- SPA 项目
- 打包结果中附带的简易服务器现在支持
serverBefore
和serverAfter
生命周期 (#292)
- 打包结果中附带的简易服务器现在支持
错误修正
extend()
高阶组件的pageinfo
方法没有返回title
时,页面标题被清空的问题- SPA 项目中如果没有启用多语言,初次访问开发环境时会报告 Redux 相关错误,提示无法辨识的 Key 的问题 (#230)
- SPA 项目中如果设定了
historyType
为browser
同时 Webpack 配置中设定了output.publicPath
,后者不生效的问题 (#249)
各子包其他改动
-
koot
- 更新依赖包 major 版本号
commander
-> ^9.3.0filesize
-> ^9.0.11fs-extra
-> ^10.1.0glob-promise
-> ^4.2.2execa
-> ^5.1.1filesize
-> ^8.0.3js-cookie
-> ^3.0.0koa-convert
-> ^2.0.0koa-helmet
-> ^6.1.0koa-router
-> ^11.0.1pm2
-> ^5.2.0react
-> ^17.0.2react-dom
-> ^17.0.2react-redux
-> ^8.0.2sharp
-> ^0.30.7typescript
-> ^4.7.4
- 添加依赖包
cli-table
filesize
- 更新依赖包 major 版本号
-
koot-electron
- 更新依赖包 major 版本号
electron
-> ^19.0.8electron-builder
-> ^23.1.0
- 更新依赖包 major 版本号
-
koot-webpack
- 移除 CSS 处理时的
universal-alias-loader
逻辑- 新版 Webpack 已默认支持
css-loader
使用resolve.alias
配置,该 Loader 不再需要
- 新版 Webpack 已默认支持
- 更新依赖包 major 版本号
compression-webpack-plugin
-> ^10.0.0copy-webpack-plugin
-> ^11.0.0css-loader
-> ^6.7.1less
-> ^4.1.3less-loader
-> ^11.0.0mini-css-extract-plugin
-> ^2.6.1postcss
-> ^8.4.14 (#285)postcss-loader
-> ^7.0.1sass-loader
-> ^13.0.2schema-utils
-> ^4.0.0style-loader
-> ^3.3.1thread-loader
-> ^3.0.4webpack
-> ^5.73.0 (#215)webpack-bundle-analyzer
-> ^4.5.0webpack-dev-middleware
-> ^5.3.3webpack-dev-server
-> ^4.9.3 (#301) (官方升级指南)workbox-webpack-plugin
-> ^6.5.3
- 添加依赖包
@babel/plugin-proposal-nullish-coalescing-operator
@babel/plugin-proposal-optional-chaining
@pmmmwh/react-refresh-webpack-plugin
- 移除 CSS 处理时的
koot
- 修正: 无法正确的处理图标文件的问题
koot
- 优化: SSR 服务器报错机制
koot-cli
- 错误修正
- 针对最新的项目模板,修正
serverless
和electron
相关配置没有自动添加的问题
- 针对最新的项目模板,修正
koot
- 优化
- 针对使用
hashHistory
的 SPA 项目,现在确保默认的 Service Worker 作用域 (Scope) 为当前路径 (location.pathname
)
- 针对使用
koot
- 优化
- 如果
sharp
安装失败,现在会给出 WARNING 而非 ERROR,打包流程会正常进行
- 如果
koot
- 优化
- 更新 TS 定义
koot & koot-webpack
- 优化
- 利用默认的 Webpack 优化 (
optimization
和 DLL 相关) 设置时,优化使用 Ant Design v4 的项目的开发环境热更新速度以及生产环境的拆包策略
- 利用默认的 Webpack 优化 (
koot
- 错误修正
- 修正某些情况下客户端开发环境中,多语言翻译函数 (
__()
) 不可用的问题
- 修正某些情况下客户端开发环境中,多语言翻译函数 (
koot
- 优化
- 更新 TS 定义
koot
- 优化
- 优化
name
配置项默认值的生成方式 - 现在
extend()
高阶组件中,在使用pageinfo
时如果没有title
属性,会默认采用name
配置值
- 优化
- 错误修正
- 更正 NPM 命令入口文件的换行符,以确保 Yarn 能正常使用 (#270)
Koot.js 0.14 开始原生支持 Electron 项目开发。利用 koot-cli
创建新项目时可以根据向导直接创建 Electron 项目并会自动配置完成开发环境。如需手动配置开发环境,如从老的 Koot.js 项目升级,请参见文档 Electron (#102)。
koot
- 重大改动
- Node.js 最低版本要求提升到
10.13.0
- 更新依赖包 major 版本号
- 移除以下依赖包,现在不会默认安装。如有使用需要,请在项目中自行安装
md5-file
- 为日后预计开发的某项功能做准备,现在客户端/浏览器端生成路由对象的流程会采用 Promise 异步方式,原则上对已有项目不会造成影响
- 移除环境变量
precess.env.KOOT_SERVER_MODE
,相关能力整合入新的环境变量process.env.KOOT_BUILD_TARGET
- Node.js 最低版本要求提升到
- 新特性
- 新配置项
target
- 设定项目子类型,目前支持serverless
- 仅针对 SSR 项目。替代之前的serverless = true'
配置electron
- 仅针对 SPA 项目- 详情请参见文档 配置/target
- 新配置项
icon
- 项目图标配置 - 新配置项
webApp
- WebApp / PWA 相关设置- 在设定了 App 图标 (icon 设置项) 时,Koot.js 会默认自动在生成、渲染的 HTML 代码结果中加入 WebApp 相关的
<meta>
和<link>
标签 - 详情请参见文档 WebApp
- 在设定了 App 图标 (icon 设置项) 时,Koot.js 会默认自动在生成、渲染的 HTML 代码结果中加入 WebApp 相关的
- 多语言/i18n:
i18n.use = 'subdomain'
- 现在可使用最深层的子域名作为语言标识 (#220)
- 新配置项
- 优化
- 小幅优化热更新速度 (移除多余的
webpack/hot
和webpack-dev-server/client
引用)
- 小幅优化热更新速度 (移除多余的
- 添加依赖包
favicons
get-image-colors
sharp
koot-boilerplate
- 优化
- PostCSS 配置中
cssnano
插件配置调整: 禁用normalizeWhitespace
- PostCSS 配置中
koot-webpack
- 重大改动
- 更新依赖包 major 版本号
compression-webpack-plugin
-> ^4.0.0copy-webpack-plugin
-> ^6.0.3css-loader
-> ^4.2.0less-loader
-> ^6.2.0sass-loader
-> ^9.0.2
- 移除以下依赖包,现在不会默认安装。如有使用需要,请在项目中自行安装
node-sass
- 替换为sass
- 如果
defines
定义项目为函数,现在会传入属性对象作为第一个参数,目前包含localeId
- 更新依赖包 major 版本号
- 添加依赖包
sass
koot-cli
- 重大改动
- Node.js 最低版本要求提升到
10.13.0
- Node.js 最低版本要求提升到
koot-electron
- 新的 NPM 包,包含 Electron 项目开发相关内容。参见文档 Electron
koot-webpack
- 优化缓存策略,现在会忽略部分不必要的环境变量 (#265)
koot-webpack
- 优化缓存策略,现在会考虑环境变量的区别 (#262)
koot
- 优化
- 继续优化有关 SPA 项目的 Service Worker 配置和 Workbox 模板
- 如果提供了
scope
,缓存空间命名会自动调整,以防冲突
- 如果提供了
- 继续优化有关 SPA 项目的 Service Worker 配置和 Workbox 模板
koot
- 优化
- 继续优化有关 SPA 项目的 Service Worker 配置和 Workbox 模板
koot-webpack
- 优化
- 更新自带的 Workbox 模板,优化在子目录中的项目的表现(通常是 SPA 项目)
koot-webpack
- 优化
- SPA 项目页面中现在会加入跳转到其他语种的链接的
<meta>
标签
- SPA 项目页面中现在会加入跳转到其他语种的链接的
koot-webpack
- 优化
hard-source-webpack-plugin
改为使用hard-source-webpack-plugin-fixed-hashbug
,以解决打包时偶发的缓存 hash 错误现象 (#241)
koot-webpack
- 优化
RUN_FIRST
入口文件现在不会参与 Webpack 的 optimization 优化流程- 该改动为了减少一些极端情况问题的发生
koot
- 新特性
- 新配置项
moduleCssFilenameTest
- 现在支持传入 Array,另外每一个条目也支持传入结构为 Webpackmodule.rule
的 Object。详情请参见文档 CSS/相关配置
- 新配置项
koot
- 新特性
- 新配置项
serviceWorker.scope
- 自动注册 Service Worker 的作用域。详情请参见文档 Service Worker/选项
- 新配置项
- 优化
- SPA 项目中,默认的 Service Worker 注册流程里,默认请求地址调整为相对路径,
scope
调整为空
- SPA 项目中,默认的 Service Worker 注册流程里,默认请求地址调整为相对路径,
koot
- 错误修正
- SSR 多语言渲染不正确的一处问题
koot
- 优化
- 更新开发环境客户端打包的 DLL 默认组件列表
- 错误修正
- 启动 SSR 服务器时,如果采用
--expose gc
命令,无法进行渲染的问题
- 启动 SSR 服务器时,如果采用
koot
- 错误修正
- SSR 时基础目录 (
global.KOOT_DIST_DIR
) 指定错误的问题
- SSR 时基础目录 (
koot
- 优化
- 优化 SSR Store 处理
koot
- 优化
- 综合优化 SSR 服务器内存溢出现象
koot
- 优化
- 进一步优化
serverPackAll = true
时的 SSR 服务器内存溢出现象
- 进一步优化
koot
- 修正
CRLF
问题,重新发布
koot
- 优化
- 优化 SSR 服务器内存溢出现象
koot
- 错误修正
koot
- 错误修正
- 潜在的开发环境中的部分静态文件无法请求的问题
- SPA 项目在某些情况下静态资源打包路径错误的问题
koot
- 优化
- 启动开发环境时的自动询问等待时间提高到 10 秒
koot
- 优化
- 启动开发环境时,会询问是否自动打开浏览器访问页面 (#218)
koot
- 新特性
- 多语言/i18n: 语言包现在可以使用 JavaScript 文件了。(仅限使用
module.exports
方式输出的 JS 文件) (#216)
- 多语言/i18n: 语言包现在可以使用 JavaScript 文件了。(仅限使用
- 错误修正
- SPA 项目中 CSS 引用资源文件的 URL 错误问题
koot-boilerplate (模板项目)
- 优化 loader 配置
koot-cli
- 更新创建项目流程,同时新增以下选择
- 项目类型
- 服务器模式
- 项目代码所在目录
- 包管理器
- 创建项目时会自动使用选择的包管理器安装依赖
koot
- 新特性
- 新配置项
serverPackAll
- 针对 SSR 项目的服务器打包,设定是否打入所有 Module。详情请参见文档 配置/serverPackAll
- 新配置项
koot
- 优化
- SSR: 服务器打包结果中会包含所有的模块
koot
- 优化
- SPA: 进一步优化多语言可靠性
koot
- 优化
- SPA: 进一步优化多语言可靠性
koot-boilerplate (模板项目)
- 更新 VS Code 中有关 ESLint 的配置
- 更新 SPA 多语言相关代码
- 更新依赖包 minor 和 patch 版本号
koot
- 重大改动
- 调整客户端打包结果目录结构
- 不再有
koot-[timestamp]
目录 - 现在会智能的根据
bundleVersionsKeep
配置项删除旧的文件 - 打包结果根目录中新增
.koot-public-outputs.json
文件,用以记录旧的打包文件列表 .public-chunkmap.json
更名为.koot-public-manifest.json
- 打包结果目录内的文件结构会受影响,但不影响使用
- 如果项目中有针对打包结果目录内文件的处理,请注意
- 更多细节请参见文档 Webpack
- 不再有
- 调整客户端打包结果目录结构
- 新特性
- 新配置项
serverless
- 设定是否输出 Serverless 模式的 Web 服务器。详情请参见文档 配置/serverless (#217) - 新配置项
exportGzip
- 控制是否自动输出 Gzip 压缩后的*.gz
文件。详情请参见文档 Webpack - 同构/SSR 项目: 打包结果根目录中添加 Docker 相关的文件
- 新配置项
- 优化
serviceWorker
配置项新增cacheFirst
networkFirst
networkOnly
属性,可用扩展缓存策略。详情请参见文档 Service Worker- 优化 Service Worker 的默认缓存规则。详情请参见文档 Service Worker
- 服务器端渲染时,现在会利用自定义的
publicPath
- SPA: 确保 React 渲染时语言包可用
- 更新 TS 定义
koot-boilerplate (模板项目)
- 添加
.prettierignore
文件
koot-webpack
- 优化打包缓存机制,现在生产环境下的打包速度会更快 (#214)
- 同构/SSR 项目: 打包结果目录中的
package.json
中现在会有更少的依赖项 - 服务器端打包时现在会强制忽略以下 Babel 插件,用以实现原生的 async/await
@babel/plugin-transform-regenerator
@babel/plugin-transform-async-to-generator
koot-webpack
- 错误修正
- 某些情况下 SPA 项目无法打包的问题 (该问题已在后续版本中修正,本次修正仅针对 0.12 版本分支)
koot
- 错误修正
- 打包出错时的无效错误提示
koot
- 优化
- 工具函数
getPort
现在明确会返回 Web Server 端口号 (#210)
- 工具函数
- 更新依赖包 minor 和 patch 版本号
koot
- 新特性
- 新配置项
devServiceWorker
- 设定开发环境中是否应用 Service Worker。详情请参见文档 配置/devServiceWorker (#211)
- 新配置项
- 更新依赖包 minor 和 patch 版本号
koot
- 错误修正
- 修正 SPA 项目禁用多语言时无法正常运行的问题 (#212)
koot
- 重大改动
- SPA 项目现在支持多语言开发
- 打包类型强制为
store
- 打包类型强制为
- SPA 项目现在支持多语言开发
- 更新依赖包 minor 和 patch 版本号
koot
- 优化
extend()
高阶组件现在会正确的向目标组件传入forwardedRef
属性 (#206)- 现在重新允许 Babel 插件
@babel/plugin-transform-regenerator
(撤回 0.12.0 的一项改动)- 为保证最大兼容
- 打包的代码量会比之前稍大一些
- 更新依赖包 minor 和 patch 版本号
koot
- 重大改动
- 更新依赖包 major 版本号
workbox
-> ^5.0.0
- 更新依赖包 major 版本号
- 优化
- 现在
serviceWorker
配置项允许传入所有 Workbox 可接受的选项 (#209)
- 现在
- 更新依赖包 minor 和 patch 版本号
koot
- 重大改动
- Node.js 最低版本要求提升到
8.12.0
- SSR & 客户端渲染 & SPA 模板生成
- 组件 CSS 的
<style>
标签上不再有id
属性,以避免和元素冲突- 如果项目中有用到根据
id
选择<style>
标签的场景,可改为选择标签属性[data-koot-module]
- 如果项目中有用到根据
- 特殊 JS 入口 CLIENT_RUN_FIRST 如果文件尺寸大于 10KB,会改为引用请求的方式加载
- 组件 CSS 的
- 默认的 Service Worker 文件现在使用 Workbox 生成
- 如果原有项目中有使用自定的 Service Worker 模板,升级后需要更新该模板。详情请参见文档 Service Worker
- 现在会忽略 Babel 插件
@babel/plugin-transform-regenerator
- 现在默认不会安装以下依赖包,如有使用需要,请在项目中自行安装
file-loader
html-webpack-plugin
json-loader
url-loader
- 更新依赖包 major 版本号
chalk
-> ^3.0.0ejs
-> ^3.0.1ora
-> ^4.0.3
- Node.js 最低版本要求提升到
- 新特性
- 现在默认支持在浏览器环境中使用 async / await 开发
- 客户端打包现在会默认提供
optimization
配置,进行代码拆分- 已有项目如无特殊需求,可将
optimization
配置移除
- 已有项目如无特殊需求,可将
- 现在开发环境下会默认启用 Service Worker
- 新配置项
distClientAssetsDirName
- 设定客户端打包结果中静态资源存放路径的目录名。详情请参见文档 配置/distClientAssetsDirName (#181) - 新全局函数
getCtx
- 获取服务器的 Koa ctx 对象。具体用法请参见文档 全局与工具函数/全局函数 (#196) - 新工具函数
koot/utils/client-get-styles
- 获取当前全局 CSS 和所有组件 CSS。具体用法请参见文档 全局与工具函数/工具函数/客户端 (#185) - 新工具函数
koot/utils/webpack-optimization-prod
- 生成 Webpackoptimization
配置,用于拆分代码。具体用法请参见文档 全局与工具函数/工具函数/打包
- 优化
- SSR & 客户端渲染 & SPA 模板生成
- 所有注入/插入的
<script>
标签现在均会新增[data-koot-entry]
属性 - 特殊 JS 入口
_CLIENT_RUN_FIRST_
现默认引入regenerator-runtime/runtime
- 所有注入/插入的
- 更新 TS 定义 (#191)
- 多语言 / i18n
- 服务器
node-sass
现在改为optionalDependencies
,如果安装失败,不会影响 Koot.js 的安装- 组件 CSS 文件现在会按照 ES Module 格式输出
- 现在同时支持 ES Module 和 CommonJS 引用方式
- 优化打包和进入开发环境时的错误日志显示
- 使用
import()
时,如果webpackChunkName
注释选项中包含特殊字符,现在会自动转换为文件名安全的字符 (#190) - 扩充配置
devDll
(#202)
- SSR & 客户端渲染 & SPA 模板生成
- 错误修正
- 客户端生命周期
before()
和after()
现在会传入正确的参数 (#198)
- 客户端生命周期
koot-boilerplate
- Node.js 最低版本要求提升到
10.13.0
- Webpack 配置
- 图片资源改用
url-loader
处理- 大于 2KB 的文件会继续使用
file-loader
处理
- 大于 2KB 的文件会继续使用
- 大于 5KB 的 SVG 的文件会改用
file-loader
处理 - 优化生产环境的代码分割规则
- 图片资源改用
- 新命令
yarn up
- 使用 Yarn 检查本地依赖版本并选择更新- 该命令要求使用 Yarn 进行本地包管理
koot-cli
- 错误修正
- 新建项目时的“覆盖”模式会删除原有文件的问题 (#180)
- 更新依赖包 minor 和 patch 版本号
koot
- 优化
- 现在可零配置正常使用 SASS 了 (#179)
- 错误修正
- SPA 项目无法使用
analyze
命令的问题
- SPA 项目无法使用
- 更新依赖包 minor 和 patch 版本号
koot
- 错误修正
store
选项指向的文件在客户端被引用多次的问题
- 更新依赖包 minor 和 patch 版本号
koot
- 错误修正
cookiesToStore
为'all'
时,部分带有=
的值处理错误 (#177)
koot-boilerplate
- 为日文添加更合适的字体
- 错误修正
- EJS 模板中
lang
属性位置不正确的问题
- EJS 模板中
koot
- 更新 TS 定义
- 错误修正
- SSR 服务器环境 Store 中的有关路由信息错误 (#178)
- 更新依赖包 minor 和 patch 版本号
koot
- 更新 TS 定义
- 注:所有类组件 (Class Component) 的
render()
方法返回值类型需更改为React.ReactNode
- 注:所有类组件 (Class Component) 的
koot
- 优化
- 通过配置
devServer.proxy
,SSR 项目的开发环境中,现在可以使用 webpack-dev-server 的proxy
能力了 (#176)
- 通过配置
koot
- 优化
- 调整开发环境的关闭流程
- 错误修正
- 开发环境 source map 不正确的问题 (#175)
koot-boilerplate
- 添加
.eslintignore
和.prettierignore
koot
- 优化
- 开发环境服务器现在会尝试自动重启
- 更新依赖包 minor 和 patch 版本号
koot-boilerplate
- 调整默认字体
font-family
核心
- 更新 TS 定义
- 更新依赖包 minor 和 patch 版本号
babel
和相关依赖包 -> 7.6.0
核心
- 更新 TS 定义
- 更新依赖包 patch 版本号
核心
- 更新 TS 定义
核心
- 更新依赖包
- major
inquirer
-> 7.0.0sass-loader
-> 8.0.0
- minor
typescript
-> 3.6.2
- patch
@types/node
-> 12.7.3@types/webpack
-> 4.39.1react-hot-loader
-> 4.12.12webpack
-> 4.39.3
- major
koot-cli
- 更新依赖包
- major
inquirer
-> 7.0.0
- major
核心
- 错误修正
- 修正:SSR 预渲染后 Store state 中的
routing
属性被清空
- 修正:SSR 预渲染后 Store state 中的
核心
- 优化
- 更新 TS 定义
核心
- 优化
extend()
高阶组件,如果传入了pageinfo
,在组件挂载 (componentDidMount
) 延迟 500ms 后,会再次自动执行一次updatePageinfo
核心
- 重大改动
- 同构/SSR 项目
- SSR 流程和生命周期调整,原则上对已有项目不会造成影响。如果升级 Koot.js 后 SSR 出现异常,请查阅: 升级指南: 0.10 -> 0.11
- 渲染缓存 (RenderCache) 默认禁用,如需继续使用,请配置
renderCache
,配置方式请查阅 项目配置/renderCache
- 同构/SSR 项目
- 新特性
- 新全局函数
getCache()
- 获取公用缓存空间。具体用法请参见文档 全局与工具函数/全局函数 (#143) - 新工具函数
clientUpdatePageinfo()
- 更新页面标题<title>
和<meta>
标签。具体用法请参见文档 全局与工具函数/工具函数 (#143) - 新服务器端生命周期
beforePreRender()
- 在预渲染之前之情。具体用法请参见文档 生命周期/服务器端 - 现在会自动为客户端打包结果中的部分资源文件生成 gzip 版本 (.gz 文件) (#129)
- 新全局函数
- 优化
createStore()
全局函数现允许传入 store 增强函数 (enhancer)。详情请参见文档 Store/全局函数 createStore (#144)- 多语言翻译函数 (
__()
) 现支持返回一个对象或数组 service-worker
对首页的缓存处理- SSR
- 服务器端: 现支持有超大型语言包的项目 (#145)
- 开发环境
- 客户端: 减少部分初始的日志输出
- Webpack
koot-css-loader
- 现支持更多的 URL 引用写法
- 针对相对路径的引用进行优化
- 添加依赖包
@types/webpack
compression-webpack-plugin
- 更新依赖包
- major
commander
-> 3.0.0koa-helmet
-> 5.0.0rimraf
-> 3.0.0style-loader
-> 1.0.0yargs
-> 14.0.0
- minor
@babel/register
-> 7.5.5@hot-loader/react-dom
-> 16.9.0@types/node
-> 12.7.2@types/react
-> 16.9.2@types/react-dom
-> 16.9.0@types/webpack
-> 4.39.0css-loader
-> 3.2.0file-loader
-> 4.2.0koa
-> 2.8.1koa-helmet
-> 5.1.0less
-> 3.10.3mini-css-extract-plugin
-> 0.8.0react
-> 16.9.0react-dom
-> 16.9.0sass-loader
-> 7.3.1webpack
-> 4.39.2webpack-bundle-analyzer
-> 3.4.1webpack-dev-server
-> 3.8.0
- patch
@babel/core
-> 7.5.5@babel/plugin-proposal-class-properties
-> 7.5.5@babel/plugin-proposal-object-rest-spread
-> 7.5.5@babel/plugin-transform-runtime
-> 7.5.5@babel/preset-env
-> 7.5.5@types/react-redux
-> 7.1.2cache-loader
-> 4.1.0copy-webpack-plugin
-> 5.0.4execa
-> 2.0.4inquirer
-> 6.5.1js-cookie
-> 2.2.1koa-body
-> 4.1.1lodash
-> 4.17.15portfinder
-> 1.0.23react-hot-loader
-> 4.12.11thread-loader
-> 2.1.3url-loader
-> 2.1.0
- major
koot-boilerplate
- 更新依赖包
- minor
husky
-> 3.0.4lint-staged
-> 9.2.3
- minor
koot-cli
- 更新依赖包
- minor
package-json
-> 6.5.0semver
-> 6.3.0
- patch
inquirer
-> 6.5.1
- minor
2019-08-20
核心
- 错误修正
- 修正配置项
renderCache = false
时不生效的问题:现在可以正确的禁用服务器渲染缓存了
- 修正配置项
2019-08-13
核心
- 优化
- 客户端更新页面信息的逻辑
2019-08-09
核心
- 优化
- 同构/SSR:
__REDUX_STATE__
与__KOOT_SSR_STATE__
会经过转义输出,并在初始化时自动反转义,以增强安全性
- 同构/SSR:
2019-08-01
核心
- 优化
- 更新 TS 定义
2019-07-30
核心
- 优化
- 调整同构/SSR 服务器逻辑,现在在
beforeDataToStore
周期运行之前,会有一次renderToString
操作,用以获取当前匹配的组件- 取消上一版本针对同构/SSR 项目的改动
- 调整同构/SSR 服务器逻辑,现在在
2019-07-30
核心
- 优化
- 优化开发环境的热更新体验
- 同构/SSR 项目在开发环境中,每次访问页面后,服务器会自动重置
- 开发环境中监控客户端资源的 Webpack 服务器现在每次打包后不再会重置
koot-css-loader
的计数器
- 优化开发环境的热更新体验
2019-07-26
核心
- 错误修正
- 修正:某些情况下 SPA 打包结果会被自动清空的问题
2019-07-22
核心
- 优化
- 同构/SSR 项目中的模板注入函数现在会传入第 3 个参数:
ctx
- KOA 的ctx
对象
- 同构/SSR 项目中的模板注入函数现在会传入第 3 个参数:
2019-07-16
核心
- 优化
- 更新 TS 定义
- 更新依赖包
- minor
inquirer
-> 6.5.0yargs
-> 13.3.0
- patch
@babel/core
-> 7.5.4@babel/plugin-proposal-object-rest-spread
-> 7.5.4@babel/preset-env
-> 7.5.4@types/node
-> 12.6.3copyfiles
-> 2.1.1lodash
-> 4.17.14portfinder
-> 1.0.21react-hot-loader
-> 4.12.6redux
-> 4.0.4
- minor
koot-boilerplate
- 更新依赖包
- minor
lint-staged
-> 9.2.0
- minor
koot-cli
- 更新依赖包
- minor
inquirer
-> 6.5.0
- patch
isbinaryfile
-> 4.0.2
- minor
2019-07-16
核心
- 优化
- 更新 TS 定义
2019-07-09
核心
- 错误修正
- 修正:SPA
index.html
中没有加载service-worker
- 修正:SPA
- 更新依赖包
- patch
@babel/plugin-proposal-object-rest-spread
-> 7.5.2@babel/preset-env
-> 7.5.2@types/node
-> 12.6.1redux
-> 4.0.2typescript
-> 3.5.3webpack
-> 4.35.3
- patch
2019-07-08
核心
- 优化
- 继续优化:高阶组件
extend()
现在会尝试使用来自于最深部的组件的页面信息 (pageinfo
),而非来自父级或外部组件 - 为 TS 加入更多的全局常量定义
- 继续优化:高阶组件
- 错误修正
- 修正:启动开发环境时,会多次打开首页
2019-07-08
核心
- 更新依赖包
- patch
react-hot-loader
-> 4.12.5
- patch
2019-07-07
核心
- 更新依赖包
- patch
@babel/plugin-proposal-object-rest-spread
-> 7.5.1
- patch
koot-boilerplate
- 更新依赖包
- minor
lint-staged
-> 9.1.0
- patch
autoprefixer
-> 9.6.1
- minor
koot-webpack
- 继续针对开发环境热更新调整生成的 Webpack 配置
2019-07-06
核心
- 优化
- 优化开发环境热更新能力
- 添加依赖包
@hot-loader/react-dom
koot-webpack
- 针对开发环境热更新调整生成的 Webpack 配置
2019-07-06
核心
- 重大改动
node.js
最低版本要求提升到8.9.0
- SSR
- 服务器: 请求隐藏文件现在会默认返回 404 (可通过配置
koaStatc.hidden
来调整这一行为)
- 服务器: 请求隐藏文件现在会默认返回 404 (可通过配置
- 新特性
- 现支持使用 TypeScript 开发 React 组件。详情请参见文档 TypeScript 开发
extend()
React 高阶组件新增选项ssr
:可控制对应组件的 SSR 行为。详情请参见文档 React 开发- SSR
- 生产环境服务器现在加入一些基础的安全机制,如防御 XSS 等 (使用
koa-helmet
实现) (#135)
- 生产环境服务器现在加入一些基础的安全机制,如防御 XSS 等 (使用
- SPA
- 现在生产环境下会创建一个简易服务器的启动脚本文件 (位于打包目录下的
/.server/index.js
) (#103)
- 现在生产环境下会创建一个简易服务器的启动脚本文件 (位于打包目录下的
- 新配置项
sessionStore
- 将全部或部分 state 对象暂存在sessionStorage
中,在刷新页面后这些 state 会自动还原。详情请参见文档 配置/sessionStore (#104) - 新函数
createStore()
- 方便项目更便捷的创建 Redux store (#105)import { createStore } from 'koot';
export default () => createStore(appReducer, appMiddlewares);
- 具体用法请参见文档 配置/store
- 优化
- 高阶组件
extend()
现在会尝试使用来自于最深部的组件的页面信息 (pageinfo
),而非来自父级或外部组件 service-worker
- 默认的注册逻辑调整,现在会在
document.onLoad
时进行注册 - 当请求没有本地缓存且访问出错时,现在会输出对应的 HTTP 请求结果
- 默认的注册逻辑调整,现在会在
- SSR
- 服务器: 会尝试自动修改 Webpack 的
file-loader
的配置,尽量避免输出静态资源文件 (#83)
- 服务器: 会尝试自动修改 Webpack 的
- 分析模式
- 优化分析模式输出文件名的可读性
- 高阶组件
- 添加依赖包
@babel/preset-typescript
@types/node
@types/react
@types/react-dom
@types/react-redux
@types/react-router
execa
koa-helmet
lodash
typescript
- 更新依赖包
- major
cache-loader
-> 4.0.1css-loader
-> 3.0.0file-loader
-> 4.0.0url-loader
-> 2.0.1os-locale
-> 4.0.0
- minor
@babel/core
-> 7.5.0@babel/plugin-proposal-class-properties
-> 7.5.0@babel/plugin-proposal-object-rest-spread
-> 7.5.0@babel/plugin-transform-runtime
-> 7.5.0@babel/preset-env
-> 7.5.0cli-spinners
-> 2.2.0fs-extra
-> 8.1.0inquirer
-> 6.4.1mini-css-extract-plugin
-> 0.7.0open
-> 6.4.0react-hot-loader
-> 4.12.3webpack
-> 4.35.2webpack-dev-server
-> 3.7.2
- patch
ejs
-> 2.6.2postcss
-> 7.0.17
- major
koot-boilerplate
- 优化默认文件夹结构
- 添加 TypeScript 组件开发示例
- SSR
- 现在服务器环境的打包结果中,不再会出现静态资源文件
- 更新依赖包
- major
husky
-> 3.0.0lint-staged
-> 9.0.2svg-url-loader
-> 3.0.0
- minor
eslint-config-koot
-> 0.2.0
- major
koot-cli
- 更新依赖包
- minor
fs-extra
-> 8.1.0inquirer
-> 6.4.1
- patch
semver
-> 6.2.0
- minor
koot-webpack
- SSR 项目生产环境服务器端打包时,
performance
下的maxEntrypointSize
和maxAssetSize
均设置为1MB
- css-loader
- 现在
url()
引用的结果会添加引号
- 现在
2019-06-26
koot-cli
- 现在可以创建 Koot 开发中版本的项目
2019-06-21
核心
- 优化
- 确保 ChunkMap 中
service-worker
地址的正确性 - 多语言翻译函数 (
__()
) 现支持更多类型的传入字符
- 确保 ChunkMap 中
2019-06-20
核心
- 优化
- 确保 Webpack 配置中
output
的合法性
- 确保 Webpack 配置中
- 错误修正
- 修正:某些情况下,开发环境中
critical.js
没有正确加载
- 修正:某些情况下,开发环境中
koot-boilerplate
- 优化默认 Webpack 配置
2019-06-18
- 核心
- 工具代码(Utility)
get-client-file-path.js
- 如果目标文件被 Webpack 拆分,现在会返回包含所有文件的路径的 Array
- 工具代码(Utility)
2019-06-17
- 核心
- React
- 高阶组件
extend()
- 优化
props.updatePageinfo
方法行为方式
- 优化
- 高阶组件
- React
2019-06-17
- 核心
- React
- 高阶组件
extend()
- 如果提供了
pageinfo
配置,组件会新增props.updatePageinfo
方法,可用来手动触发页面信息更新
- 如果提供了
- 高阶组件
- React
2019-06-12
- 核心
- Webpack
- 现在会正确处理 CSS 中
cursor
属性的url()
引用
- 现在会正确处理 CSS 中
- Webpack
2019-06-12
- 核心
- SPA
- 通过
<link>
标签自动引入的 CSS 文件,现在会引用正确的资源文件地址 (#121)
- 通过
- SPA
2019-05-31
- 核心
- 错误修正
- React SSR 项目的开发环境内,在服务器端的打包结果更新后,服务器端不会自动重启的问题
- 错误修正
2019-05-24
- koot-cli
- 错误修正
- 创建新项目时
package.json
中koot.baseVersion
值错误的问题
- 创建新项目时
- 错误修正
2019-05-24
- 重大改动
- 调整默认的 React SSR 项目客户端打包结果目录结构
- 通过
koot-cli
更新的项目不受影响- 如果想要开启该功能,请手动修改 Koot 配置文件,添加
bundleVersionsKeep
项
- 如果想要开启该功能,请手动修改 Koot 配置文件,添加
- 现在会在
public
目录下建立多个名为koot-[时间戳]
的目录 - 以最新的时间戳命名的目录即为当前的客户端打包结果
- 保留的这些目录的数量可控,默认为
2
(新配置项bundleVersionsKeep
) - 该功能可主动关闭 (新配置项
bundleVersionsKeep
)
- 通过
- 调整默认的 React SSR 项目客户端打包结果目录结构
- 核心
- 配置项
- 新
classNameHashLength
- 调整组件 CSS 的 className hash 长度。详情请参见文档 配置/classNameHashLength - 新
bundleVersionsKeep
- 指定客户端打包结果保留的版本的个数。详情请参见文档 配置/bundleVersionsKeep (#79) - 新
devMemoryAllocation
- 指定开发环境中 node.js 分配的内存。详情请参见文档 配置/devmemoryallocation webpackBefore
和webpackAfter
回调函数传入的参数对象新增额外信息。详情请参见文档 配置/webpackbefore
- 新
- 现在可以使用
yarn
安装并使用 Koot.js (#99) - 现在可以在 NPM 命令中动态添加变量了,这些变量会自动添加到环境变量中,并允许在项目代码中随意调用。详情请参见文档 环境变量/动态添加环境变量 (#78)
- SSR 渲染 & SPA 模板
- SSR
- 现在会确保在多次服务器打包进程之间正确的重置
koot-css-loader
的计数器 (#100)
- 现在会确保在多次服务器打包进程之间正确的重置
- Webpack
koot-css-loader
- 如果 CSS 属性值包含多个
url()
,现在会正确处理 (#82) - 类似
.component .component
这样使用空格 (``) 选择器或>
选择器时,现在选择器之后的`.component` 字段会被保留,不会进行 hash。使用其他选择器的情况依旧会进行 hash。详情请参见文档 CSS/组件 CSS 的 className hash 规则 (#68) - 默认的 className hash 长度调整为
6
- 如果 CSS 属性值包含多个
- 开发环境
- 分析模式
- 现在进入分析模式不再会影响打包结果目录
- 错误修正
- 修正某些情况下,自动生成的
service-worker
文件无法正常处理离线请求的问题
- 修正某些情况下,自动生成的
- 更新依赖包
- major
cache-loader
-> 3.0.1cli-spinners
-> 2.1.0cookie
-> 0.4.0fs-extra
-> 8.0.1less-loader
-> 5.0.0opn
->open
6.3.0
- minor
inquirer
-> 6.3.1mini-css-extract-plugin
-> 0.6.0pm2
-> 3.5.1webpack
-> 4.32.2webpack-bundle-analyzer
-> 3.3.2webpack-dev-middleware
-> 3.7.0webpack-dev-server
-> 3.4.1webpack-hot-middleware
-> 2.25.0
- patch
@babel/core
-> 7.4.5@babel/plugin-proposal-class-properties
-> 7.4.4@babel/plugin-proposal-decorators
-> 7.4.4@babel/plugin-proposal-object-rest-spread
-> 7.4.4@babel/plugin-transform-regenerator
-> 7.4.5@babel/plugin-transform-runtime
-> 7.4.4@babel/polyfill
-> 7.4.4@babel/preset-env
-> 7.4.5@babel/register
-> 7.4.4babel-loader
-> 8.0.6copy-webpack-plugin
-> 5.0.3es5-shim
-> 4.5.13glob
-> 7.1.4is-port-reachable
-> 2.0.1postcss
-> 7.0.16react-hot-loader
-> 4.8.8yargs
-> 13.2.4
- major
- 配置项
- koot-cli
- 更新依赖包
- major
fs-extra
-> 8.0.1semver
-> 6.0.0
- minor
inquirer
-> 6.3.1latest-version
-> 5.1.0npm-email
-> 3.2.0ora
-> 3.4.0package-json
-> 6.3.0
- major
- 更新依赖包
- koot-boilerplate
- 添加
eslint-config-koot
和prettier
配置 - 添加
husky
和lint-stagged
开发依赖包和相关配置- 在
git commit
之前,自动对部分语法和编写习惯进行修复
- 在
- 更新动态路由的写法
- 使用 Webpack 的
import()
语法
- 使用 Webpack 的
- 添加
2019-04-11
- 错误修正
- SPA 首次访问时页面信息没有正确更新 (#96)
2019-04-10
- 核心
- 现在会在打包流程完成后,删除临时目录 (
/logs/temp
)
- 现在会在打包流程完成后,删除临时目录 (
- 错误修正
2019-04-04
- 核心
- 开发环境
- 进一步优化热更新速度
- 开发环境
- React
- 高阶组件
extend()
pageinfo
现在允许直接传入 Object
- 高阶组件
- React 同构
- 进一步优化开发环境下数据同构和页面信息更新的能力
- KOA
ctx
新增:ctx.originTrue
ctx.hrefTrue
- HTML 结果中的本域 URL,现在均会遵循
proxyRequestOrigin
的设置
- 更新依赖包
- patch
webpack-dev-middleware
-> 3.6.2
- patch
2019-04-03
- React 同构
- 进一步优化开发环境下数据同构的能力
- 更新依赖包
- patch
@babel/core
-> 7.4.3@babel/plugin-proposal-object-rest-spread
-> 7.4.3@babel/plugin-transform-regenerator
-> 7.4.3@babel/plugin-transform-runtime
-> 7.4.3@babel/polyfill
-> 7.4.3@babel/preset-env
-> 7.4.3commander
-> 2.20.0ora
-> 3.4.0
- patch
2019-04-01
- 错误修正
- 修正开发环境下错误的 DLL 文件引用关系
- 更新依赖包
- patch
react-hot-loader
-> 4.8.2
- patch
2019-03-29
- React SPA
- 进一步优化模板注入
2019-03-29
- 错误修正
- 修复 SPA 项目无法开启开发环境的问题
- 更新依赖包
- patch
react
-> 16.8.6react-dom
-> 16.8.6
- patch
2019-03-28
- 核心
- Webpack 打包
- 优化错误信息的显示
- Webpack 打包
- 错误修正
- 修正 SPA 类型的项目在打包时由模板注入 (template inject) 引发的问题
2019-03-23
- 错误修正
- 修复一处阻止开发环境正常启动的问题
- 更新依赖包
- patch
copy-webpack-plugin
-> 5.0.2react
-> 16.8.5react-dom
-> 16.8.5
- patch
2019-03-22
- 重大改动
- 重写 React 同构服务器逻辑,原则上对已有项目不会造成影响
- 若发现从
koot
中引用的store
history
或localeId
值为undefined
,请尝试改为使用getStore()
getHistory()
或getLocaleId()
方法
- 若发现从
- 移除了
sp-css-import
,请修改为新式的@extend()
写法 - 移除了
pageinfo()
,请修改为新式的@extend()
写法 - 调整了项目配置方案,原则上对已有项目不会造成影响
- 0.6 版本之前的配置文件现已不再支持
- 调整 CSS 打包、使用规则
- 现在明确只存在 2 种 CSS 文件:全局 CSS 和组件 CSS
- 可通过配置文件对文件名规则进行配置。详情请参见文档的 CSS 使用/配置
- 全局 CSS 规则
- 所有全局 CSS 文件会根据所属的 Webpack 入口,被抽出为对应的独立的 CSS 文件 (打包结果中的
extract.[hash].css
) - 所有这些 CSS 文件结果也会被整合到一个统一的 CSS 文件中 (打包结果中的
extract.all.[hash].css
) - 统一的 CSS 文件的文件内容会被自动写入到
<head>
标签内的<style>
标签中 - 虽然通常情况下已无需要,不过根据 Webpack 入口抽出的 CSS 文件仍可根据具体的需求独立使用
- 所有全局 CSS 文件会根据所属的 Webpack 入口,被抽出为对应的独立的 CSS 文件 (打包结果中的
- 组件 CSS 规则
- 所有的组件 CSS 必须通过
extend
高阶组件的styles
选项调用 - 这些 CSS 文件必须有一个名为
.component
或.[name]__component
的 className- 该 className 会被更换为 hash 结果,如
.a85c6k
或.nav__bjj15a
- 该 className 会被更换为 hash 结果,如
props.className
会传入到对应的组件,其值为与上述结果对应的 hash 后的 className
- 所有的组件 CSS 必须通过
- 重写 React 同构服务器逻辑,原则上对已有项目不会造成影响
- 核心
- 配置项
- 新
historyType
- 项目所用的history
组件的类型。详情请参见文档的 配置 章节 - 新
internalLoaderOptions
- 用以扩展几乎无法修改的内置loader
所用的设置。详情请参见文档的 配置 章节 - 新
serverOnRender.beforeDataToStore
和serverOnRender.afterDataToStore
- 允许更详细的使用服务器端渲染生命周期。详情请参见文档的 配置 章节 cookiesToStore
现支持传入true
: 同步所有 cookie,包括 cookie 原始字符串 (以__
为名称)staticCopyFrom
/staticAssets
现支持传入 Array
- 新
- 优化
koot-start
命令,进一步尝试避免koot-build 命令未找到
的问题 - Webpack 打包
- 打包时不再会在项目根目录下生成临时文件,这些文件现在移至
/logs/tmp/
目录下 - 现在每种打包模式仅保留最近 2 次打包的日志文件 (
/logs/webpack-config/
目录下)
- 打包时不再会在项目根目录下生成临时文件,这些文件现在移至
- 开发环境
- 大辅优化热更新能力
- 默认关闭
webpack
热更新的多步骤 (multiStep)
机制,配置项devHmr
(原webpack.hmr
) 现不再有默认值,若仍需要开发环境的多步打包功能,请手动开启
- 默认关闭
- 将大部分开发环境所用的临时文件和标记文件整合、移动到
/logs/dev/
目录中
- 大辅优化热更新能力
- 配置项
- React
- 根层组件添加
componentDidCatch
生命周期方法,以进一步保障 React 输出渲染结果
- 根层组件添加
- React 同构
- 确保
connect
封装的组件,其数据同构功能可用
- 确保
- React SPA
- 对于传入自定
store
对象或生成方法的项目,确保生成store
使用的history
对象为浏览器所用对象 - 移除
AppContainer
逻辑的相关文件
- 对于传入自定
- 添加依赖包
cache-loader
extract-hoc
thread-loader
- 移除依赖包
autoprefixer
koa-compose
koa-compress
koa-helmet
koa-html-minifier
koa-json
koa-multer
koa-onerror
koa-response-time
progress
sp-css-import
- 更新依赖包
- major
cli-spinners
-> 2.0.0copy-webpack-plugin
-> 5.0.1css-loader
-> 2.1.0file-loader
-> 3.0.1koa-body
-> 4.1.0koa-mount
-> 4.0.0koa-static
-> 5.0.0yargs
-> 13.2.2
- minor
@babel/core
-> 7.4.0@babel/plugin-proposal-class-properties
-> 7.4.0@babel/plugin-proposal-decorators
-> 7.4.0@babel/plugin-proposal-object-rest-spread
-> 7.4.0@babel/plugin-syntax-dynamic-import
-> 7.2.0@babel/plugin-transform-regenerator
-> 7.4.0@babel/plugin-transform-runtime
-> 7.4.0@babel/polyfill
-> 7.4.0@babel/preset-env
-> 7.4.2@babel/register
-> 7.4.0acorn
-> 6.1.1autoprefixer
-> 9.4.7koa
-> 2.7.0less
-> 3.9.0mini-css-extract-plugin
-> 0.5.0pm2
-> 3.3.1opn
-> 5.5.0ora
-> 3.2.0os-locale
-> 3.1.0react
-> 16.8.4react-dom
-> 16.8.4react-hot-loader
-> 4.8.0webpack
-> 4.29.6webpack-bundle-analyzer
-> 3.1.0webpack-dev-middleware
-> 3.6.1webpack-dev-server
-> 3.2.1
- patch
babel-loader
-> 8.0.5chalk
-> 2.4.2css-loader
-> 2.1.1debug
-> 4.1.1inquirer
-> 6.2.2portfinder
-> 1.0.20postcss
-> 7.0.14rimraf
-> 2.6.3
- major
2018-03-07
- React 同构 (
ReactApp
)- 延长
routerMatch
超时的检测时间
- 延长
2018-02-22
- React 同构 (
ReactApp
)- 进一步对客户端运行脚本进行优化,以减少初始渲染时闪屏出现几率
2018-12-24
- React
- 高阶组件
extend()
- 确保
pageinfo
方法会被执行
- 确保
- 高阶组件
2018-12-17
- 核心
- 多语言
- 同构时如果获取的语种 ID 在项目中不存在,现在会忽略该值
- 多语言
2018-12-12
- 核心
- 配置项
- 现在会处理
server.onRender.beforeDataToStore
或server.onRender.afterDataToStore
配置为Pathname
类型的情况
- 现在会处理
- 配置项
2018-12-12
- 核心
- 配置项
- 新
server.onRender.beforeDataToStore
和server.onRender.afterDataToStore
- 允许对服务器渲染时的生命周期方法进行更详细的设定。详情请参见文档的 配置/服务器端 章节
- 新
- 配置项
2018-12-11
- 错误修正
- 修复客户端无法保存当前语种 ID 的问题
2018-12-11
- 核心
- 配置项
- 新
i18n.use
- 配置多语言项目的 URL 使用方式。详情请参见文档的 配置/多语言 章节
- 新
- 多语言
- 现支持第一级路由为语种 ID 的使用方案 (
i18n.use = 'router'
) - 自动添加的多语言跳转 meta 标签现在会过滤掉当前语言的标签
- 现支持第一级路由为语种 ID 的使用方案 (
- 配置项
- React 同构 (
ReactApp
)- 改进服务器输出 CSS 结果时的稳定性
- 更新依赖包
- patch
react-router
-> 3.2.1
- patch
2018-12-04
- 核心
- 配置项
- 新
server.proxyRequestOrigin
- 若本 Node.js 服务器是通过其他代理服务器请求的(如 nginx 反向代理),可用这个配置对象声明原请求的信息。详情请参见文档的 配置 章节
- 新
- PWA
service-worker
默认行为调整,现在初始时仅会对.js
文件进行缓存
- 配置项
- 错误修正
- 修复某些情况下,同构服务器启动端口不正确的问题
2018-12-03
- React
- 高阶组件
extend()
connect
现在支持传入 Array,以对应react-redux
的connect()
的多参数情形
- 高阶组件
- React 同构 (
ReactApp
)- 确保服务器的
onRender
生命周期仅响应可用的请求,同时确保此时的数据为最新可用的数据
- 确保服务器的
- 错误修正
- 修复某些情况下,模板注入 (
inject
) 使用的state
失效的问题 - 修复某些情况下,Webpack 打包因出错挂起的问题
- 修复某些情况下,模板注入 (
2018-11-29
- 核心
- Webpack 打包
- 现在每种打包模式仅保留最近 5 次打包的日志文件 (
/logs/webpack-config/
目录下)
- 现在每种打包模式仅保留最近 5 次打包的日志文件 (
- Webpack 打包
- React 同构 (
ReactApp
)- 注入 (
inject
) 现在支持函数写法,详情请参见文档的 HTML 模板 章节
- 注入 (
- React SPA
- 不启用多语言的项目现在可以恢复使用 SPA 模式了
- 错误修正
- 修复并发访问时存在多个
koot-locale-id
meta 标签的问题 - 修复某些情况下,HTML 同构结果中
<script>
标签之间会出现额外逗号 (,
) 的问题
- 修复并发访问时存在多个
- 更新依赖包
- minor
webpack
-> 4.26.1
- patch
mini-css-extract-plugin
-> 0.4.5terminate
-> 2.1.2yargs
-> 12.0.5
- minor
2018-11-22
- 核心
- 配置项
- 新
webpack.hmr
- 可选。开发模式下webpack.HotModuleReplacementPlugin
插件的配置对象。详情请参见文档的 配置 章节
- 新
- 多语言
- 翻译方法 (默认
__()
) 现在支持语言包中类型为Array
的内容
- 翻译方法 (默认
- 开发模式
react
自动热更新能力现在支持更多的情况
- 配置项
- React
- 支持提供
store
创建方法函数的项目
- 支持提供
2018-11-19
- 核心
- 配置项
- 生产模式
- 使用
koot-start
命令时,如果打包过程发生错误,现在会显示更详细的错误记录
- 使用
- 开发模式
- 现在可以同时启动多个 Koot 项目的开发模式了
- 启用
webpack
热更新的多步骤 (multiStep)
机制提高热更新速度 - 启用
webpack.DllPlugin
提高打包更新速度
- 分析模式
- 输出的文件名结果现在具有可读性
- Webpack 打包
- 重写 CSS 相关
loader
,现在会确保同构结果中 CSS 样式名的正确性 - 执行打包时会自动清理
/logs/webpack-config/
目录下创建于 2 天前的报告文件 /logs/webpack-config/
目录下新生成的报告文件中,现在会正确的显示正则表达式
- 重写 CSS 相关
- React
- 高阶组件
extend()
pageinfo
和data
不再要求必须使用connect
- 使用新的
context
语法重写样式、CSS 相关逻辑
- 高阶组件
- React 同构 (
ReactApp
)- 现在启动服务器时会对设定的端口进行检查。如果端口被占用,会报告相应的错误
- 对于传入完整
store
的项目,现在每次请求时会尝试使用全新的state
- 优化服务器端初始化
store
的流程
- 错误修正
- 修复生成了错误的多语言跳转 meta 链接地址的问题
- 修正某些情况下 React 组件热更新不起作用的问题
- 添加依赖包
inquirer
is-port-reachable
portfinder
- 移除依赖包
sp-css-loader
- 更新依赖包
- major
sp-css-import
-> 4.0.0
- minor
copy-webpack-plugin
-> 4.6.0webpack
-> 4.25.1
- patch
@babel/core
-> 7.1.6@babel/plugin-proposal-decorators
-> 7.1.6@babel/preset-env
-> 7.1.6css-loader
-> 1.0.1fs-extra
-> 7.0.1postcss
-> 7.0.6react
-> 16.6.3react-dom
-> 16.6.3react-hot-loader
-> 4.3.12react-redux
-> _5.1.1sp-css-loader
-> 1.5.3yargs
-> 12.0.4
- major
- 其他
- 更新测试项目和测试案例
koot-cli
- 更新项目到 v0.7 时,会自动添加兼容旧版规则的
css
配置
- 更新项目到 v0.7 时,会自动添加兼容旧版规则的
sp-css-import
- 更新核心代码,以兼容 koot v0.6 后的新结构
- 使用新的
context
语法重写样式、CSS 相关逻辑
2018-10-29
- 错误修正
- 修复打包时将 webpack 配置写入 log 文件的过程中的一处错误
2018-10-29
- 核心
- 新的配置方式
koot.config.js
- 整合原有的
koot.js
和koot.build.js
- 原有配置方式依旧可用
- 请参照模板项目了解新的配置文件内容和写法
- 整合原有的
- 项目配置
redux
新增可选配置项store
- 项目自创建的 Redux store。提供该对象时,
redux.combineReducers
配置项会被忽略
- 项目自创建的 Redux store。提供该对象时,
- 开发模式
- 启用
babel-loader
的缓存,加速热更新的响应速度
- 启用
- Webpack
- 写入打包配置记录文件时如果发生错误,现在会忽略该错误,并继续流程
- 新的配置方式
- React
- 路由 (router) 移除配置外层包裹的空层级
- 模板 (
ejs
) - 新语法 -content(文件名)
输出对应文件的文件内容到 HTML 代码中,如content('critical.css')
会读取打包结果中的critical.css
并渲染到 HTML 代码中 -pathname(文件名)
输出对应文件的访问地址到 HTML 代码中,如pathname('critical.css')
会将打包结果中critical.css
的 URL 访问地址渲染到 HTML 代码中 - 如果模板文件中针对critical
使用上述新语法,则styles
和scripts
两个注入内容中不会出现critical
的相关内容 - 模板项目已更新,可供参考
- React 同构
- 生产 (
prod
) 环境开启渲染缓存,缓存默认存在 5 秒
- 生产 (
sp-css-loader
- 开发模式下启用 CSS 样式名可读性规则:CSS 样式名以
.[class]__component
方式命名时,DOM 上的样式名会变为类似.nav__a8c0
的结果
- 开发模式下启用 CSS 样式名可读性规则:CSS 样式名以
- 更新依赖包
react
-> 16.6.0react-dom
-> 16.6.0react-redux
-> 5.1.0webpack
-> 4.23.1webpack-dev-server
-> 3.1.10copy-webpack-plugin
-> 4.5.4autoprefixer
-> 9.3.1
2018-10-15
- 核心
- Webpack
less-loader
默认开启 Javascript 选项 (javascriptEnabled
)
- Webpack
2018-10-15
- React
- 移除根层
#root
下的额外<div>
- 移除根层
2018-10-12
- React
- 高阶组件
extend
data
可传入 Function,作为传统的data.fetch
- 该情况下,数据检查操作建议写在 redux action 中
data.fetch
可传入 Array,核心代码会自动执行Promise.all()
- 高阶组件
2018-10-11
- 错误修正
pageinfo
移除已有meta
标签时遇到undefined
时全局报错的问题
2018-10-11
- 核心
- 为避免版本冲突,将所有 NPM 依赖包的版本改为固定版本
- 开发模式 (
koot-dev
)- 新的命令选项
--no-open
:禁用自动打开浏览器 - 针对 React 组件自动启用热更新
- 注意事项请参见文档的 React 组件热更新 章节
- 新的命令选项
- React 同构 (
ReactApp
)- 新的高阶组件
extend
import { extend } from 'koot'
- 可作为组件装饰器使用
- 提供同构数据功能
- 包含
pageinfo
和ImportStyle
功能 - 具体用法请参见文档的 React 高阶组件 章节
- 优化 CSS 处理相关流程
- 开发模式
- 页面可访问静态资源文件目录中的内容
- 新的高阶组件
- 错误修正
- 浏览器环境 (
__CLIENT__
) 中使用utils/get-port
方法无结果的问题
- 浏览器环境 (
2018-09-18
- ReactApp (React 同构)
- 开发模式:重写可使用本机 IP 地址访问的功能,现在会适应更多场景
2018-09-18
- 打包配置 (
/koot.build.js
)- 新增选项:
staticAssets
- 静态资源文件存放路径,打包时会自动复制该目录下的所有文件到打包目录下,方便直接使用
- 新增选项:
2018-09-17
koot-analyze
命令现在不会生成service-worker
文件- ReactApp (React 同构)
- 开发模式:可使用本机 IP 地址访问
2018-09-17
- 启用命令:
koot-analyze
2018-09-14
- 错误修正
- 开发模式不会实时响应语言包文件更新的问题
2018-09-14
- 错误修正
- 开发模式不断重启的问题
2018-09-14
- ReactApp (React 同构)
- 当多语言(i18n)启用时,在
<head>
中自动生成跳转到相应的其他语种的链接的pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfoImportStyle`Reacthttps`pageinfo
ImportStyleReacthttps
pageinfo``ImportStyleReacthttps<link>
标签
- 当多语言(i18n)启用时,在
- 内部代码
hl
修改为全局常量
2018-09-14
- 依赖库
- 添加:
@babel/plugin-syntax-dynamic-import
- 添加:
2018-09-12
- 生成 Webpack 配置
- 完善:忽略值为
null
undefined
等空值的插件项
- 完善:忽略值为
2018-09-12
- 生成 Webpack 配置
- 忽略值为
null
undefined
等空值的插件项
- 忽略值为
2018-09-11
- 错误修正
- 启动开发模式时生成名为
1.json
文件的问题
- 启动开发模式时生成名为
2018-09-10
- 更新
babel
至 v7 - 新增单元测试
- 生成 Webpack 配置
- Webpack 打包流程
2018-08-24
- 更名至
koot
- 重置版本号
更名至 koot
2018-06-19
- 可直接通过
super-project
载入内容- 用法示例:
import { store, history } from 'super-project'
) - 当前可用内容
store
- Redux storehistory
- 路由与历史记录对象,包含push
、replace
等方法localeId
- (仅在 i18n 开启时可用) 当前语种 IDpageinfo
- (原super-ui-page
) 更新页面title
和meta
的装饰器
- 用法示例:
- 移除
super-ui-page
依赖- 原有的
superPage
移动到super-project
主包中 - 更名为
pageinfo
- 原有的
2018-02-11
- 新增文件
CHANGELOG.md
- 更新依赖库
sp-isomorphic-utils
getFile
: 如果根据文件名直接匹配到目标文件,直接返回该文件名,不再继续进行文件夹内过滤
sp-pwa
create
: 创建 service-worker 时,新增参数outputFilenameHash
,表示创建的 sw 文件名中带有 hash,默认为false
- 当前的 service-worker 规范中,浏览器不会对 sw 文件进行缓存,每次访问页面时都会尝试重新获取 sw 文件
get-service-worker-file
: 更新到最新的getFile()
方法