lightweight-charts 调试沙箱完全指南基于 debug 目录搭建本地开发与试验环境【免费下载链接】lightweight-chartsPerformant financial charts built with HTML5 canvas项目地址: https://gitcode.com/gh_mirrors/li/lightweight-charts本文围绕 debug/README.md 展开系统讲解 lightweight-charts 仓库中debug目录的定位、设计原理与完整使用流程——从初始化公共根目录、创建独立沙箱、构建本地源码、启动开发服务器含生产构建模式到清理沙箱的每一步。读完本文你将掌握一套不污染主代码库的轻量级试验环境搭建方法可随时用本地构建的 lightweight-charts 源码验证自定义图表、系列Series与插件Plugin效果并理解其基于 npm workspaces 的多沙箱共享依赖机制。debug 目录的定位与设计初衷在 lightweight-charts 仓库当前版本 5.2.1见 package.json中debug目录承担着一个特殊的职责为贡献者提供一个不会被提交到版本库的调试与试验沙箱环境。从 debug/README.md 的说明可以提炼出它的三个核心设计目标安全隔离所有调试文件创建在playground/目录下且 debug/.gitignore 中只有一行*意味着debug目录下的任何新建文件都不会进入 Git 版本库不影响主代码库。快速上手内置一份default默认模板包含 index.html、index.ts、tsconfig.json执行一条命令即可生成可运行的示例页面。多沙箱管理提供 create / serve / remove 一套脚本方便同时维护多个相互独立的试验沙箱并让所有沙箱共享同一份依赖。在官方构建文档 BUILDING.md 中也有明确指引想使用本地构建的包进行试验时请遵循 debug/README.md 创建沙箱进行开发。这说明该目录是官方认可的本地开发调试入口。核心机制两个 JSON 模板 npm workspaces要理解整个沙箱体系需要先看清debug目录下的关键配置文件因为它们定义了沙箱的骨架。入口脚本清单debug/package.jsondebug/package.json 是所有命令的中转站它把具体工作转发给playground目录{ name: playground_root, os: [darwin, linux], private: true, scripts: { init: mkdir playground cp default/.global.json playground/package.json cp .npmrc playground npm install --prefix playground;, create: npm run --prefix playground create, remove: npm run --prefix playground remove, list: npm run --prefix playground list, serve: npm run --prefix playground serve, serve:prod: NODE_ENVproduction npm run --prefix playground serve } }两点值得注意的源码事实os: [darwin, linux]声明该工具链面向 macOS 与 Linux内部脚本大量使用sh -c因此在 POSIX shell 环境macOS / Linux 终端下工作最顺畅。serve:prod通过设置环境变量NODE_ENVproduction来切换运行模式其背后机制详见下文运行沙箱一节。全局模板default/.global.jsoninit命令会把 debug/default/.global.json 复制为playground/package.json成为所有沙箱的公共根配置{ dependencies: { lightweight-charts: file://../.. }, devDependencies: { typescript: 5.5.4, vite: 7.2.0 }, private: true, workspaces: [./*], scripts: { create: sh -c mkdir -p $1.d cd $1.d cp ../../default/.local.json package.json cp ../../default/* . npm install -, remove: sh -c rm -fr $PWD/${1##*/}.d -, serve: sh -c vite $1.d - } }从这个模板可以看出沙箱体系的两大设计支柱本地依赖lightweight-charts通过file://../..指向仓库根目录。由于根目录 package.json 的main/module/exports都指向dist/下的构建产物如dist/lightweight-charts.production.mjs所以必须先构建仓库源码沙箱才能解析到本地版本——这正是 README 强调Ensure that lightweight-charts is built的原因。依赖共享workspaces: [./*]把playground下的每个沙箱目录NAME.d注册为工作区。当你在某个沙箱里npm install额外包时npm 会把公共依赖提升到playground/node_modules于是所有沙箱包括未来新建的共享同一份依赖避免重复安装。本地模板default/.local.json每个沙箱创建时其自身package.json来自 debug/default/.local.json内容为空对象{}。沙箱本身不做版本声明所有依赖解析统一交给上层的 workspaces 根处理。环境配置文件debug/.npmrcpackage-lock false不生成 lock 文件、fund false、audit false、loglevel error让安装过程更安静、更轻量符合调试场景。debug/.gitignore内容为*配合前文所述保证playground与沙箱文件永不入库。第一步初始化公共根目录首次使用前需要在debug目录下执行npm run init这条命令实际执行见 debug/package.jsonmkdir playground cp default/.global.json playground/package.json cp .npmrc playground npm install --prefix playground;即依次完成创建playground/目录所有沙箱的父目录将全局模板.global.json复制为playground/package.json复制.npmrc到playground在playground下执行npm install安装 lightweight-charts本地路径、typescript、vite 等公共依赖。初始化成功后debug/playground/即为沙箱体系的工作根。第二步构建本地 lightweight-charts由于沙箱依赖本地源码副本file://../..在创建/运行沙箱之前必须先构建仓库根目录的产物npm run build --prefix ..--prefix ..表示在debug的上层目录即仓库根目录执行。根目录的build脚本为npm-run-all tsc rollup bundle-dts见 package.json会依次完成 TypeScript 编译tsc、Rollup 打包rollup和声明文件打包bundle-dts最终生成dist/下的各类构建产物development、production、standalone 等。第三步创建沙箱在debug目录下执行npm run create NAME将NAME替换为沙箱名称即可在playground/NAME.d下创建沙箱。该命令经npm run --prefix playground create转发到全局模板中定义的sh -c mkdir -p $1.d cd $1.d cp ../../default/.local.json package.json cp ../../default/* . npm install - NAME具体动作创建目录playground/NAME.d将default/.local.json复制为该沙箱的package.json将default模板下的所有文件复制进沙箱index.html、index.ts、tsconfig.json、.local.json等执行npm install——由于处于 workspaces 体系中依赖会安装/复用共享的playground/node_modules。默认模板内容剖析新建沙箱默认自带一个可直接运行的示例页面三份文件各司其职debug/default/index.html提供容器节点与入口加载html langen head meta charsetUTF-8 / meta nameviewport contentwidthdevice-width, initial-scale1.0 / /head body stylepadding: 0; margin: 0 div idcontainer styleposition: absolute; width: 100%; height: 100%/div script typemodule srcindex.ts/script /body /htmldebug/default/index.ts演示了 lightweight-charts v5 的典型用法createChart创建图表、chart.addSeries(AreaSeries, ...)添加面积系列、chart.addSeries(CandlestickSeries, ...)添加蜡烛系列最后chart.timeScale().fitContent()自适应缩放import { AreaSeries, CandlestickSeries, ChartOptions, createChart, DeepPartial, } from lightweight-charts; const chartOptions { autoSize: true, } satisfies DeepPartialChartOptions; const chart createChart(container, chartOptions); const areaSeries chart.addSeries(AreaSeries, { lineColor: #2962FF, topColor: #2962FF, bottomColor: rgba(41, 98, 255, 0.28), }); areaSeries.setData([ { time: 2018-12-22, value: 32.51 }, { time: 2018-12-23, value: 31.11 }, // ... 更多数据点见 debug/default/index.ts ]); const candlestickSeries chart.addSeries(CandlestickSeries, { upColor: #26a69a, downColor: #ef5350, borderVisible: false, wickUpColor: #26a69a, wickDownColor: #ef5350, }); candlestickSeries.setData([ { time: 2018-12-22, open: 75.16, high: 82.84, low: 36.16, close: 45.72 }, // ... 更多数据点见 debug/default/index.ts ]); chart.timeScale().fitContent();debug/default/tsconfig.json采用ESNext目标与strict严格模式启用noUnusedLocals、noUnusedParameters、noImplicitReturns等编译检查并开启emitDeclarationOnly生成声明文件——与仓库主代码的编码规范保持一致保证沙箱代码质量。第四步运行沙箱开发模式实时刷新在debug目录下执行npm run serve NAME该命令最终执行vite NAME.d见全局模板中的serve脚本由 Vite 启动一个 Web 服务器编译 TypeScript内置支持提供playground/NAME.d目录下的静态资源文件变更时自动热更新live reload保存代码后浏览器即时刷新非常适合边改边调试图表效果。生产构建模式如需验证生产压缩构建下的表现执行npm run serve:prod NAME它等价于NODE_ENVproduction npm run --prefix playground serve。关键原理在根目录 package.json 的exports字段.: { development: { types: ./dist/typings.d.ts, import: ./dist/lightweight-charts.development.mjs }, production: { types: ./dist/typings.d.ts, import: ./dist/lightweight-charts.production.mjs }, default: { types: ./dist/typings.d.ts, import: ./dist/lightweight-charts.production.mjs } }Vite 会根据NODE_ENV自动选择对应的导出条件开发模式加载lightweight-charts.development.mjs含调试信息生产模式加载lightweight-charts.production.mjs压缩产物。两种模式下的类型声明均来自dist/typings.d.ts保证了类型体验一致。第五步删除沙箱不再需要某个沙箱时在debug目录下执行npm run remove NAME该命令执行rm -fr $PWD/NAME.d经全局模板中的remove脚本递归删除playground/NAME.d下的全部内容及目录本身。需要注意这只移除沙箱自身公共的playground/node_modules共享依赖不受影响其他沙箱仍可正常使用。管理多个沙箱与扩展依赖多沙箱并存每次npm run create NAME都会生成独立的NAME.d目录各沙箱拥有自己的index.ts/index.html互不干扰可并行调试不同的图表方案。扩展依赖在任何沙箱内npm install pkg安装的包因 workspaces 机制会被提升到共享的playground/node_modules对所有现有及未来沙箱立即可用——这是 README 中any installed package will be shared across all sandboxes的底层实现。关于 list 命令debug/package.json 中还声明了list脚本转发npm run --prefix playground list但从源码结构看默认模板 .global.json 中并未定义对应的list脚本如需使用请以实际 playground 配置为准。从零到一的完整流程速查步骤命令作用初始化npm run init创建playground/公共根并安装共享依赖构建源码npm run build --prefix ..构建仓库根目录的本地 lightweight-charts 产物创建沙箱npm run create NAME在playground/NAME.d生成带默认模板的沙箱运行开发npm run serve NAMEVite 启动服务器TS 编译 热更新运行生产npm run serve:prod NAME以NODE_ENVproduction加载压缩构建删除沙箱npm run remove NAME递归删除playground/NAME.d总结debug目录为 lightweight-charts 贡献者提供了一套零侵入、多实例、依赖共享的本地调试方案通过default双 JSON 模板.global.json定义共享根、.local.json定义沙箱本体与 npm workspaces 机制实现了所有沙箱共用同一份本地构建与第三方依赖NODE_ENVproduction与根目录exports条件导出配合还能无缝切换开发/生产构建进行验证。整个工作流与 BUILDING.md 中使用本地构建包进行开发的指引一脉相承是深入理解 lightweight-charts 源码、试验自定义系列与插件的首选入口。相关核心文件均可直接阅读源码进一步研究debug/package.json、debug/default/.global.json、debug/default/index.ts、debug/default/index.html 与 debug/default/tsconfig.json。【免费下载链接】lightweight-chartsPerformant financial charts built with HTML5 canvas项目地址: https://gitcode.com/gh_mirrors/li/lightweight-charts创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考