配置文件
Node.js 环境
Node.js 支持多种格式的配置文件,请直接跳转到您喜欢的格式查看。
.json
推荐.json5
.{js,ts,mjs,mts,cjs,cts}
支持所有的 js/ts 后缀,后续可能统称为js
格式.{yml,yaml}
后续可能统称为yaml
格式
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 获取环境变量。
{ // 这是一个数组 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, },};
const messageTitle = 'hello' + 'world' + '这是 js 的语法哦'
module.exports = { 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
这一个文件需要放置在:
- 你运行命令的目录下(linux 运行
ls
,windows 运行dir
就能看到这个文件为准,或其下的 config 目录) - 被运行的脚本的同级目录下(也就是它的旁边,或其下的 config 目录)
自定义配置
当然你也可以自定义配置文件路径,不拘束于文件名和放置位置,只需要给运行的脚本传入参数即可
需要注意的是,你的配置文件必须是上面提到的格式以及后缀
const { run } = require('@asunajs/caiyun');
(async () => { // 自定义路径 await run('./demodmeo.ts');})();