0.0.0-alpha.15 • Published 2 months ago

@lcap/nasl-unified-generator v0.0.0-alpha.15

Weekly downloads
-
License
-
Repository
-
Last release
2 months ago

nasl-generator

文档覆盖

本项目是NASL->Code的转译器。推荐使用pnpm进行依赖管理。

项目架构

TBA

项目组成

nasl-generator

位于packages/nasl-generator

开发

首次开发需要安装依赖。

pnpm i

启动开发服务器(playground),它用于本地快速调试NASL的翻译,命令如下:

pnpm dev

它会读取packages/nasl-generator/playground/fixtures/src.json作为NASL翻译。在翻译完成之后,会调用HTTP请求,将产物写入packages/nasl-react-server/out

更新Fixtures

packages/nasl-generator下,执行如下命令以更新playground/fixtures/src.json

sh update-fixture.sh
  1. 这个脚本会调用batchQuery接口,将NASL树的JSON表示下载到本地。
  2. 如果更新失败,可能是cookie失效。请更新update-fixture.sh中的cURL部分。

nasl-react-server

位于packages/nasl-react-server

作用:

  1. 提供接口供nasl-generatorplayground调用,将翻译产物写入本地out文件夹。
  2. template(用以存储react的基本模板,包含rspack配置、package.json等等)文件夹复制到out文件夹,以提供产物执行的基本框架。这是因为nasl-generator的翻译产物并不会包括这些内容。

开发

首次开发请安装依赖:

pnpm i

执行如下命令启动开发服务器:

pnpm dev

每次启动开发服务器,都会 1. 删除template文件夹中的node_modules 1. 删除out文件夹 2. 将template文件夹复制为out文件夹

⚠注意️:out文件夹下的文件都是临时的,会被nasl-generator覆盖。每次如果想要改动持久保持,请修改template文件夹。

产物启动

在启动nasl-generator的开发服务器进行翻译之后,翻译的产物存在于out目录下。这个翻译产物已经执行过pnpm i,因此可以直接启动:

pnpm dev

如果出现@lcap/basic-template未安装的错误,可能是因为目前正在从yalc引用@lcap/basic-template。请参考@lcap/basic-template联调指南一章。

指南

@lcap/basic-template联调

  1. 全局安装yalc

yalc是用于npm包本地开发的一个工具。可以在本地通过文件系统软链接形成一个registry,开发中的包可以发布到这个registry中,也可以从这个registry安装。一次发布(yalc publish --push)之后,所有从registry安装的开发中的包都会更新。

pnpm add -g yalc
  1. lcap-template项目下的packages/basic目录下,执行如下命令。

这会启动开发服务器(它会自动watch @lcap/basic-template的源码变化,编译,并将改动推送到本地yalc registry:

pnpm i
pnpm dev
  1. packages/nasl-react-server/template下,正常安装依赖即可。定义在packages/nasl-react-server/template/package.json里的postyalc hook会自动执行pnpm i命令,安装依赖。之后,在修改@lcap/basic-template源码之后,就会把改动自动同步到所有从本地yalc registry安装@lcap/basic-template的地方了。