2.0 KiB
2.0 KiB
inline-schema/csv-loader
A rspack loader for CSV files that uses inline-schema for type validation.
Installation
npm install inline-schema
Usage
The loader expects:
- First row: Property names (headers)
- Second row: Inline-schema definitions for each property
- Remaining rows: Data values
Example CSV
name,age,active,scores
string,number,boolean,number[]
Alice,30,true,[90; 85; 95]
Bob,25,false,[75; 80; 70]
rspack.config.js
module.exports = {
module: {
rules: [
{
test: /\.schema\.csv$/,
use: {
loader: 'inline-schema/csv-loader',
options: {
delimiter: ',',
quote: '"',
escape: '\\',
bom: true, // 处理 BOM (默认 true)
comment: '#', // 忽略 # 开头的注释行 (默认 '#')
trim: true, // 修剪表头和值的前后空格 (默认 true)
},
},
},
],
},
};
Importing in TypeScript
import data from './data.schema.csv';
// data = [
// { name: "Alice", age: 30, active: true, scores: [90, 85, 95] },
// { name: "Bob", age: 25, active: false, scores: [75, 80, 70] }
// ]
Options
| Option | Type | Default | Description |
|---|---|---|---|
delimiter |
string | , |
Column delimiter |
quote |
string | " |
Quote character |
escape |
string | \ |
Escape character |
bom |
boolean | true |
Handle byte order mark |
comment |
string | false |
# |
Comment character (set false to disable) |
trim |
boolean | true |
Trim headers and values |
Schema Syntax
Uses inline-schema syntax:
| Type | Schema | Example |
|---|---|---|
| String | string |
hello |
| Number | number |
42 |
| Boolean | boolean |
true |
| Array | string[] or [string][] |
[a; b; c] |
| Tuple | [string; number] |
[hello; 42] |
License
ISC