Skip to main content

配置文件

你可以在应用的根目录下放置一个reskript.config.{mjs|ts}文件来声明所有reSKRipt需要的配置,该配置文件是一个标准的ESM模块,你可以编写如下的内容:

import {configure} from '@reskript/settings';

export default configure(
'webpack',
{
// 配置内容
}
)

首先,你需要安装@reskript/settings包,并从这个包中引入configure函数,调用该函数后用于export default导出。

configure函数有2个参数,第一个参数为底层的构建器,当前仅支持webpack,只要写死即可。第二个参数则为具体的配置对象,可以包含以下属性:

一个经典的reskript.config.ts类似如下:

import {configure} from '@reskript/settings';

export default configure(
'webpack',
{
featureMatrix: {
stable: {
// 正式环境的矩阵配置
},
insiders: {
// 小流量的矩阵配置
},
dev: {
// 本地开发的矩阵配置
},
},
build: {
appTitle: '我的应用标题',
},
devServer: {
port: 8080,
},
}
);

configure对象中的每一项都是可以省略的,省略时会使用默认配置代替。

配置文件路径

默认情况下,配置文件是你的项目目录下的reskript.config.tsreskript.config.mjs文件。

builddevtestplay命令中,你可以使用--config参数指定一个配置文件。如果你指定配置文件,但这个文件不存在,则命令会异常退出。

如果你没有通过--config参数指定配置文件,并且没有任何默认的配置文件,则所有配置项都会使用内置的默认值。

基础类型

在配置reSKRipt的时候,你需要了解一些内部常用的类型定义。这些结构中的字段大部分都由工具来获取,不需要你手动来声明。但如果你需要进行一些深入的定制,先了解一下这些结构更好。

构建环境

构建环境是一次构建的最基本上下文,它的定义如下:

type ReskriptDriver = 'webpack';

type WorkMode = 'production' | 'development';

interface ProjectAware {
readonly cwd: string;
}

interface WorkModeAware extends ProjectAware {
readonly mode: WorkMode;
}

interface BuildEnv extends WorkModeAware {
// 调用工具时的子命令
readonly usage: 'build' | 'devServer' | 'test';
// 源码所在目录,默认为`src`
readonly srcDirectory: string;
// 当前代码库的包名,默认读取`package.json`中的`name`字段
readonly hostPackageName: string;
// 项目配置文件中定义的配置
readonly projectSettings: ProjectSettings;
}

动态构建环境

在构建环境的基础上包含了当次构建的版本、时间信息:

interface RuntimeBuildEnv extends BuildEnv {
// 当前构建的版本号,会从`git`的最新提交中自动生成
readonly buildVersion: string;
// 构建发生的时间
readonly buildTime: string;
}

构建入口

最终落实到一次构建过程的最终信息,在动态构建环境的基础上增加了特性矩阵相关的内容:

interface BuildEntry extends RuntimeBuildEnv {
// 构建的特性值
readonly features: Record<string, any>;
// 当前构建的特性矩阵中的目标
readonly buildTarget: string;
}