npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

seismic-doc-parser

v2.0.0

Published

Web Components文件解析工具,支持Vue/React

Readme

FileParser 组件使用文档 组件介绍 file-parser 是基于 Web Component 开发的文件解析与自定义格式配置组件,支持 TXT/CSV/Excel(xlsx/xls)文件解析、字段列范围配置、数据类型定义、格式保存与复用等核心功能,适用于需要自定义文件解析规则的业务场景。 快速开始 2.1 引入方式 方式 1 直接引入脚本 引入组件脚本: html 预览

在页面中使用组件: html 预览 方式 2 模块化引入(ES Module) javascript 运行 import './path/to/file-parser.js' 2.2 基础使用 html 预览 <file-parser id="fileParser" formats='[{"id":"SP210.R","name":"SP210.R","isStandard":true,"doc_format":{"bConfig":[{"index":1,"name":"INDEX","startCell":18,"endCell":25,"type":"double"}]}}]' default-format="SP210.R" is-admin="true" accept="[txt,csv,excel]"

外部可配置参数(Properties) 参数名 类型 默认值 说明 formats Array [] 外部传入的格式列表,用于格式选择下拉框。每个格式项结构:{id: String, // 格式唯一标识 name: String, // 格式显示名称 isStandard: Boolean, // 是否为标准格式(区分标准 / 自定义分类) doc_format: Object // 可选,格式对应的字段配置,包含 bConfig} defaultFormat String 空字符串 默认选中的格式名称 / ID,组件初始化时会自动匹配 formats 中对应项(支持匹配 id 或 name) isAdmin Boolean false 是否开启管理员权限:true:可编辑字段名称、数据类型、经纬度类型,可新增 / 删除字段,可保存格式;false:仅可编辑起始列 / 终止列,其余编辑功能禁用 accept String "[txt,csv,excel]" 文件类型限制,格式为数组字符串,支持的取值:基础类型:txt、csv、excel(excel 包含 xlsx/xls);示例:仅允许 TXT:"[txt]";允许 CSV 和 Excel:"[csv,excel]" onSave Function undefined 保存按钮点击时的回调函数,参数为解析后的字段信息(同 saveAs 事件的 detail) 组件事件(Events) 组件会派发以下自定义事件,外部可通过 addEventListener 监听 4.1 saveAs 触发时机:点击组件 “确定” 按钮时 事件参数(e.detail): javascript 运行 { fileType: String, // 文件类型(txt/csv/xlsx/xls) fileName: String, // 选中的文件名 fileContent: File, // 选中的文件对象 bConfig: Array, // 配置的字段列表 startRow: Number/String, // 起始行 endRow: Number/String, // 终止行 validChar: String, // 有效行标识符 invalidChar: String, // 无效行标识符 splitParams: Object, // 分割参数(仅 TXT 文件有效) format: String // 当前选中的格式 ID } 4.2 returnFormatData 触发时机:点击 “保存当前格式” 按钮并确认时 事件参数(e.detail): javascript 运行 { formatName: String, // 保存的格式名称 isStandard: Boolean, // 格式类型(标准 / 自定义) bConfig: Array, // 字段配置列表 startRow: Number/String, // 起始行 endRow: Number/String, // 终止行 invalidChar: String, // 无效行标识 validChar: String, // 有效行标识 splitParams: Object // 分割参数 } 核心数据结构说明 5.1 bConfig(字段配置项) javascript 运行 { index: Number, // 序号(组件自动维护) name: String, // 字段名称 startCell: Number, // 起始列(TXT 为字符索引,表格为列号,均从 0/1 开始) endCell: Number, // 终止列 type: String, // 数据类型,可选值:int8/int16/int32/float/double/string/date/boolean isCoordinate: String // 经纬度类型,可选值:longitude/latitude/elve(为空则无) } 5.2 splitParams(分割参数) javascript 运行 { splitType: String, // 分割类型:fixed(固定列)/char(字符分隔) useTab: Boolean, // 是否使用 Tab 分隔 useSpace: Boolean, // 是否使用空格分隔 useSemicolon: Boolean, // 是否使用分号分隔 useComma: Boolean, // 是否使用逗号分隔 useContinuous: Boolean, // 连续分隔符当作一个 otherSeparator: String, // 其他自定义分隔符 startToEnd: Boolean // 是否解析起始行到最后一行 } 完整使用流程 步骤 1 引入组件 html 预览

步骤 2 配置组件参数 html 预览 <file-parser id="myFileParser" formats='[ {"id":"SP210.R","name":"SP210.R","isStandard":true,"doc_format":{"bConfig":[{"index":1,"name":"INDEX","startCell":18,"endCell":25,"type":"double"}]}}, {"id":"CustomFormat","name":"自定义格式","isStandard":false} ]' default-format="SP210.R" is-admin="true" accept="[txt,excel]"

步骤 3 监听组件事件 / 配置回调 javascript 运行 const parser = document.querySelector('#myFileParser'); // 方式 1 使用 onSave 回调 parser.onSave = (data) => { console.log('保存的解析配置:', data); // 业务逻辑:提交配置到后端 / 本地存储等 }; // 方式 2 监听 saveAs 事件 parser.addEventListener('saveAs', (e) => { console.log('解析结果详情:', e.detail); }); // 监听格式保存事件 parser.addEventListener('returnFormatData', (e) => { console.log('保存的格式数据:', e.detail); // 业务逻辑:保存格式到后端 }); 步骤 4 用户交互操作 点击组件的 “自定义格式” 按钮,打开解析弹框; 点击 “浏览选择文件”,选择 TXT/CSV/Excel 文件; 配置标题行(默认 1 行,可修改),组件自动解析生成字段配置; (管理员权限)编辑字段名称、数据类型、经纬度类型,或新增 / 删除字段; 拖动 A 区红色标记线,调整字段的起始 / 终止列(或手动输入); (可选)点击 “分割参数设置”,配置 TXT 文件的分隔符规则; 选择格式类型(标准 / 自定义)和格式名称,点击 “保存当前格式” 可保存配置; 点击 “确定” 按钮,触发保存回调 / 事件,获取解析配置。 常见使用场景示例 场景 1 基础使用(管理员权限,仅解析 TXT 文件) html 预览 <file-parser is-admin="true" accept="[txt]" default-format="CustomTXT" formats='[{"id":"CustomTXT","name":"TXT 通用格式","isStandard":false}]'

场景 2 非管理员权限(仅可调整列范围,不可编辑字段) html 预览 <file-parser is-admin="false" accept="[excel]" default-format="ExcelStandard" formats='[{"id":"ExcelStandard","name":"Excel 标准格式","isStandard":true}]'

场景 3 自定义格式列表并监听保存事件 javascript 运行 // 初始化格式列表 const formatList = [ { id: "SP300.TXT", name: "SP300.TXT", isStandard: true, doc_format: { bConfig: [ {index: 1, name: 'ID', startCell: 0, endCell: 5, type: 'int'}, { index: 2, name: 'Name', startCell: 6, endCell: 20, type: 'string' } ] } } ]; // 设置组件格式列表 const parser = document.querySelector('#myFileParser'); parser.formats = formatList; // 监听保存事件 parser.addEventListener('saveAs', (e) => { // 提交到后端 fetch('/api/save-parser-config', { method: 'POST', body: JSON.stringify(e.detail), headers: { 'Content-Type': 'application/json' } }); }); 注意事项 文件类型限制:accept 参数仅限制文件选择框的可选类型,组件内部会二次校验文件扩展名,确保匹配; 管理员权限:isAdmin=false 时,字段名称、数据类型、经纬度类型、新增 / 删除字段、保存格式等功能会被禁用; 格式匹配规则:defaultFormat 会优先匹配格式列表中项的 id 或 name(不区分大小写),无匹配时选中第一个格式; 标题行与起始行:起始行默认等于 “标题行 + 1”,修改标题行时起始行会自动同步; TXT 文件列索引:TXT 文件的起始 / 终止列为字符索引(从 0 开始),表格文件(CSV/Excel)为列号(从 1 开始); 事件冒泡:组件派发的事件开启了 bubbles: true 和 composed: true,可在父元素上监听; 兼容性:基于 Web Component 开发,需确保浏览器支持(现代浏览器均支持,IE 不支持)。 常见问题 Q1 默认格式无法自动选中? A1 检查 defaultFormat 的值是否与 formats 中项的 id/name 完全匹配(去除首尾空格),或确认 formats 已正确传入(建议在组件挂载后再赋值)。 Q2 TXT 文件红色标记线无法拖动? A2 确保已选中 B 区的字段序号(点击序号激活标记线),且文件类型为 TXT。 Q3 Excel 合并单元格不显示? A3 组件已兼容 Excel 合并单元格解析,合并单元格会自动渲染为跨行 / 跨列样式,隐藏合并区域的子单元格。 Q4 保存格式时提示名称重复? A4 同类型(标准 / 自定义)下格式名称不可重复,重复时保存会覆盖原有格式配置。