Skip to main content

升级至V3

本文摘录了reSKRipt V2 -> V3版本的所有破坏性变更,如果你正在使用2.x版本,可以参考本文进行升级。如果你在升级过程中遇到任何困难,欢迎在GitHub上提交Issue来咨询。

V3的主要变化为更新eslint8.x版本、stylelint14.x版本,并修改了devServer.https配置项。

自动检测

你可以先使用我们的迁移脚本对项目做一次快速地扫描:

# 保持在项目根目录下
npx @reskript/doctor migrate

按照报告的说明进行修复后,如果依然有问题,以下是各变更的详细介绍。

依赖版本升级

以下是V3版本中涉及到外部依赖的版本更新,你需要对相应的工具进行版本更新。

NodeJS版本

V3要求你的NodeJS的最低版本为14.18.0。在3.0.0版本中我们并没有引入必须>= 14.18.0的特性,但我们计划在后续的小版本中使用node:fs形式引入内置模块,为了以CommonJS发布的reSKRipt能够正常运行,我们对NodeJS的版本做出了更严格的要求。

更新ESLint

V3版本要求eslint的版本为8.x,你可以执行以下命令进行更新:

# NPM
npm i -D eslint@latest
# Yarn
yarn add -D eslint@latest
# PNPM
pnpm i -D eslint@latest

更新StyleLint

V3版本要求stylelint的版本为14.x,你可以执行以下命令进行更新:

# NPM
npm i -D stylelint@latest
# Yarn
yarn add -D stylelint@latest
# PNPM
pnpm i -D stylelint@latest

reSKRipt已经在LESS文件上针对stylelint@14做了相应的配置,你不会遇到缺失customSyntax的警告。但如果你使用SASS等其它语言,则需要做进一步的自定义配置

以SASS为例,如果需要自定义配置,你可以安装postcss-sass包:

# NPM
npm i -D postcss-sass@latest
# Yarn
yarn add -D postcss-sass@latest
# PNPM
pnpm i -D postcss-sass@latest

随后在项目目录下新建stylelint.config.cjs文件,并填写以下内容:

const sassSyntax = require('postcss-sass');

module.exports = {
extends: require.resolve('@reskript/config-lint/config/stylelint'),
overrides: [
{
files: ['**/*.sass'],
customSyntax: sassSyntax,
},
],
};

配置变更

devServer.https变更

我们在2.5.0版本中引入了支持客户端HTTPS功能,为了满足对客户端页面与服务端请求代理的双重HTTPS需求,我们引入了一个新的devServer.https配置结构,但依然保留了类型为boolean的兼容性。

在V3版本中,devServer.httpsboolean类型配置将被废弃,仅允许对象类型,有以下3种选择:

  1. 不配置该选项,则客户端与请求代理均不会使用HTTPS。
  2. 配置{proxy: true}则开启请求代理的HTTPS协议。
  3. 配置{client: true, serverOptions: {...}}则开启客户端网页请求的HTTPS,其中serverOptions用于传递证书等信息。

具体请查看启用HTTPS的相关文档。

移除Sentry全局变量

在V3版本中,我们移除了eslint配置中的Sentry这一全局变量。如果你有在代码中直接使用Sentry.captureException等方法,则可能在检查代码规范时看到类似的错误:

error  'Sentry' is not defined  no-undef

你可以在你项目中的.eslintrc.cjs文件中增加以下内容来阻止这一错误:

module.exports = {
// 其它如extends等配置
globals: {
Sentry: 'readonly',
},
};