跳转到内容

配置文件

Node.js 环境

Node.js 支持多种格式的配置文件,请直接跳转到您喜欢的格式查看。

  • .json 推荐
  • .json5
  • .{js,ts,mjs,mts,cjs,cts} 支持所有的 js/ts 后缀,后续可能统称为 js 格式
  • .{yml,yaml} 后续可能统称为 yaml 格式

JSON

JSON 是一种数据传输格式,并不适合用来做配置文件,之所以推荐使用,是因为对人不方便,但是对机器来说非常方便。

一个 JSON 例子.json
{
"caiyun": [
{
"auth": "GM6ashkdajdhasdasdbnakj"
}
],
"alipan": [
{
"token": "askdjahdjakshdgjhasgdhj"
}
],
"message": {
"hello": "world"
}
}

为了与 json5 行为一致,我们为 json 增加了环境变量的支持

{
"message": {
"pushplus": {
"token": "`$env.PUSHPLUS_TOKEN`"
}
}
}

语法如 pushplus.token 所示,在字符串中使用 ` 表达式 ` (注意前后的符号,且 ` 只能是这个字符串的开头和结尾)表示这是一个表达式(当然目前这个表达式仅支持用来插入环境变量)

JSON5

实际上,本项目的 JSON5/JSON 是当成 JavaScript Object 处理的(JSON 写入后格式会变回为 json),并且可以通过 $env 获取环境变量。

一个 JSON5 例子.json5
{
// 这是一个数组
caiyun: [
{
auth: 'GM6ashkdajdhasdasdbnakj', // 10086 的账号
},
{
// 这是不建议的写法,这里的 $env.CAIYUN_AUTH 会在 auth 刷新后覆盖为 "shkdajdhasxxxx"
auth: $env.CAIYUN_AUTH,
},
],
// 这也是一个数组
alipan: [
{
token: 'askdjahdjakshdgjhasgdhj',
},
],
message: {
pushplus: {
token: $env.PUSHPLUS_TOKEN, // 直接使用环境变量的 PUSHPLUS_TOKEN
},
title: 'hello' + 'world' + '这是js的语法哦'
},
}

JavaScript

前面的 JSON5 好像就是一个笑话,因为本来就支持 JavaScript/TypeScript。(推荐 mjs 或 mts)

推荐使用 esm 的语法,你无需担心主程序使用 cjs 而导致兼容问题,配置采用 jiti 实现 ts/js 和 esm/cjs 之间的兼容。

未来会为 TypeScript 增加类型提示,如果你使用 VScode、IntelliJ IDEA 等支持 ts 的编辑器将会方便很多。

const messageTitle = 'hello' + 'world' + '这是 js 的语法哦'
export default {
caiyun: [
{
// 和上面的 JSON5 一样,这里需要直接写
auth: 'GM6ashkdajdhasdasdbnakj',
},
],
alipan: [
{
token: 'askdjahdjakshdgjhasgdhj',
},
],
message: {
pushplus: {
// 这里不使用 $env ,而是直接使用 node 的 api
token: process.env.PUSHPLUS_TOKEN,
},
title: messageTitle,
},
};

YAML

不做过多介绍

为啥是 yaml@2 而不是 js-yaml,因为我要保留注释写入

配置简介

以下都以 JSON 为例。

{
"caiyun": [
{
"auth": "GM6ashkdajdhasdasdbnakj"
}
],
"alipan": [
{
"token": "askdjahdjakshdgjhasgdhj"
}
],
"message": {
"hello": "world"
}
}
  • caiyun/alipan 等等字段都是包含的功能的名称,后面的配置将直接应用到对应的功能上,具体内容见具体功能的指南。
  • message 是推送消息的配置,详见推送。

多账号

以 alipan 为例,[ 开头 ] 结尾的叫做数组,数组可以包含多个对象,每个对象就是一个账号。

举个栗子

{
"alipan": [
{
"token": "askdjahdjakshdgjhasgdhj"
},
{
"token": "asdla';dla;sdlk"
}
]
}

配置路径

默认配置

默认配置的名称必须是以下之一(加载顺序排序):

  • asign.json(推荐)
  • asign.json5
  • asign.config.js
  • asign.config.ts
  • asign.config.mjs
  • asign.config.mts
  • asign.config.cts
  • asign.config.cjs
  • asign.yaml
  • asign.yml

这一个文件需要放置在:

  1. 你运行命令的目录下(linux 运行 ls,windows 运行 dir 就能看到这个文件为准,或其下的 config 目录)
  2. 被运行的脚本的同级目录下(也就是它的旁边,或其下的 config 目录)

自定义配置

当然你也可以自定义配置文件路径,不拘束于文件名和放置位置,只需要给运行的脚本传入参数即可

需要注意的是,你的配置文件必须是上面提到的格式以及后缀

const { run } = require('@asunajs/caiyun');
(async () => {
// 自定义路径
await run('./demodmeo.ts');
})();