# constants-sync-tool **Repository Path**: YiZhiXiong/constants-sync-tool ## Basic Information - **Project Name**: constants-sync-tool - **Description**: axios + nodejs , 服务端数据同步工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-19 - **Last Updated**: 2025-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 常量同步 常量同步是一个工具,它可以帮助你保持你的常量与远程数据源的同步。这个工具可以配置各种数据源,并且可以在定时间隔内自动从这些源获取数据。获取到的数据然后会被写入到JavaScript文件中,这些文件可以被导入在你的前端项目中使用。 ## 如何使用 1. **安装**: 通过npm或yarn安装这个包。 ```bash npm install constants-sync # OR yarn add constants-sync ``` 2. **配置**: 在你的项目根目录创建一个`config.js`文件,并导出一个对象来为每个需要同步的数据源进行配置。参考[示例配置](#example-config)。 3. **运行**: 通过运行下面的命令开始同步过程: ```bash npx constants-sync ``` 4. **在你的项目中使用**: 导入生成的JavaScript文件,来自`src/constants`目录,然后在你的前端代码中用它们作为常量。 ## 配置 配置文件导出一个对象,有三个属性: 1. `list`: 表示需要同步的数据源数组,每个元素是一个对象,包含两个属性: - `name`: 这个数据源的一个唯一名字,会被用来作为生成文件的基础名称。 - `api`: 一个对象,包含获取数据所需的API端点详情,有三个属性: - `url`: API端点的URL地址。 - `method`: HTTP方法(例如'GET'、'POST'等)。 - `headers`: 一个对象,包含任何需要由API提供的头信息。在这里你应该将你的访问令牌放在安全的地方。 - `outputFile`: 一个对象,指定如何格式化和写入数据到JavaScript文件中,有两个属性: - `path`: 相对于项目根目录的生成文件位置的相对路径。 - `format`: 一个函数,接收获取到的数据作为输入并返回一个表示生成的文件内容的字符串。这个函数负责将接收到的JSON数据转换为JavaScript常量导出。建议使用[JSON.stringify](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify),并设置缩进2个空格以使输出更易读。 2. `syncInterval`: 从API获取数据的间隔时间(毫秒)。默认为每小时一次(3600000 ms)。 3. `versionCheck`: 一个布尔值,表示是否检查更新并显示在控制台中的提示信息,如果有可用的更新的话。默认是true。 ## 示例配置 ```javascript const baseUrl = "http://example.com"; const headers = { Authorization: "Bearer YOUR_ACCESS_TOKEN", }; module.exports = { list: [ { name: "users", api: { url: `${baseUrl}/api/users`, method: "GET", headers, }, outputFile: { path: "src/constants/server/users.server.js", // 根据你的项目结构进行调整 format: (data) => `// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY\n\nexport default ${JSON<|begin▁of▁sentence|>{JSON.stringify( data, null, 2 )}`, }, }, ], syncInterval: 60 * 60 * 1000, // 每小时同步一次 versionCheck: true, }; ``` 记住,要将`YOUR_ACCESS_TOKEN`和`http://example.com`替换为你的实际令牌和基础URL。配置文件是CommonJS格式的,因此可以被主脚本所require。如果你更喜欢使用ES6的import/export语法,那也是完全可行的。 ```