升级至V3
本文摘录了reSKRipt V2 -> V3版本的所有破坏性变更,如果你正在使用2.x版本,可以参考本文进行升级。如果你在升级过程中遇到任何困难,欢迎在GitHub上提交Issue来咨询。
V3的主要变化为更新eslint至8.x版本、stylelint至14.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.https的boolean类型配置将被废弃,仅允许对象类型,有以下3种选择:
- 不配置该选项,则客户端与请求代理均不会使用HTTPS。
 - 配置
{proxy: true}则开启请求代理的HTTPS协议。 - 配置
{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',
    },
};