@nasl/cli
v0.2.0
Published
NASL (Next Application Specific Language) CLI tool for checking, compiling and developing NASL code
Readme
@nasl/cli
NASL 语言的命令行工具,提供编译、检查、开发服务等功能。
目前只支持 NaturalTS 表示的 NASL 代码,编译为 Vue 和 JS。
安装
npm install -g @nasl/cli使用
初始化配置(nasl init)
nasl init会在当前目录创建 nasl.config.json 配置文件。
{
"serverBaseURL": "https://nasl.lcap.163yun.com", // NASL 编译服务的基础 URL
"representation": "NaturalTS", // NASL 语言的表示
"namespaceResolution": "filename-as-namespace", // 命名空间解析策略
"ideVersion": "4.4", // IDE 版本
"srcDir": "src", // 源代码目录
"outDir": "out" // 输出目录
}入口文件说明
下面的命令中均支持 [entry] 参数,表示入口文件:
- 入口文件可选,不填则表示处理整个 src 目录
- 入口文件路径相对于项目目录,但必须在 src 目录下
- 支持具体文件和 glob 模式(注意要用引号包裹)
- src/app.enums.Status.ts 支持具体文件
- "src/app.enums.*.ts" 表示所有枚举
- "src/app.{.entities..ts,structures..ts,enums..ts}" 表示所有实体、数据结构和枚举,即全部用户自定义类型
- "src/app.logics.*.ts" 表示所有逻辑文件
- "src/*.tsx" 表示所有页面文件
- 会自动进行依赖分析,收集所有依赖的文件
- 依赖的页面文件(.tsx)不会继续进行依赖分析,而是直接提取签名,以提高性能
编译 NASL 代码(nasl compile 或 naslc)
# 编译整个 src 目录
nasl compile
# 编译指定入口文件及其依赖(自动进行依赖分析)
nasl compile src/app.frontendTypes.pc.frontends.pc.views.dashboard.tsx
# 或使用简写
naslc src/app.frontendTypes.pc.frontends.pc.views.dashboard.tsx
naslc "src/app.enums.*.ts"
naslc "src/app.{*.entities.*.ts,structures.*.ts,enums.*.ts}"
naslc "src/app.logics.*.ts"
naslc "src/*.tsx"检查 NASL 代码(nasl check)
# 检查整个 src 目录
nasl check
# 检查指定入口文件及其依赖(自动进行依赖分析)
nasl check src/app.frontendTypes.pc.frontends.pc.views.dashboard.tsx
nasl check "src/app.enums.*.ts"
nasl check "src/app.{*.entities.*.ts,structures.*.ts,enums.*.ts}"
nasl check "src/app.logics.*.ts"
nasl check "src/*.tsx"依赖分析(nasl dep)
建议指定入口文件,否则会扫描整个 src 目录,输出量较大。
nasl dep "src/app.enums.*.ts"
nasl dep "src/app.{*.entities.*.ts,structures.*.ts,enums.*.ts}"
nasl dep "src/app.logics.loadStudentList.ts"
nasl dep "src/*.tsx"
nasl dep启动开发服务(nasl dev)
nasl dev启动开发服务后,默认访问 http://localhost:3100 查看预览效果。
可以用 --port 和 --host 更换端口号和主机名。
nasl dev --port 4900 --host 0.0.0.0dev 进程始终保持运行,规则如下:
- 启动:
- 有 src: 初始编译生成 out,然后启动 webpack
- 无 src: 1. 有 out:直接启动 webpack,等待 src 目录创建 2. 无 out:启动 webpack,等待 src 目录创建
- 运行中
- out 被删除:如果有 src,自动重新编译恢复 out
- src 被创建:自动编译生成 out 目录
- src 被删除: 使用缓存的 out 目录
构建项目(nasl build)
与 nasl dev 对应,构建成最终用于浏览器的 dist 产物。
# 使用生产模式构建(默认)
nasl build
# 使用开发模式构建
nasl build --mode development
# 构建指定入口文件及其依赖
nasl build src/app.frontendTypes.pc.frontends.pc.views.dashboard.tsx转换文件格式(nasl transform)
# files2full: 将 src 中的文件组合成 fullNaturalTS
nasl transform files2full [entry] --output [outputPath]
# 默认输出到 ./full-natural.ts
# json2files: 将 JSON 文件转换成 src 的 files
nasl transform json2files [jsonFile] --output [outputPath]
# 如果不指定 jsonFile,将按照默认 IDE 版本的基础模板转换
# files2json: 将 src 中的文件转换成一个 JSON(待实现)
nasl transform files2json [entry] --output [outputPath]
# 默认输出到 ./files.json在 IDE 中直接创建应用(nasl create-app-in-ide)
注意:目前该命令不支持 useOPENAPI 模式,只在测试环境使用。
# 会询问确认(默认)
nasl create-app-in-ide [entry]
# 跳过确认,直接执行
nasl create-app-in-ide [entry] --quiet
# 显示详细信息
nasl create-app-in-ide [entry] --verbose此命令会将当前项目的 NASL 代码上传到远程服务,在 IDE 中创建新的应用。默认会询问用户确认,使用 --quiet 选项可以跳过确认。
环境变量配置
除了在 nasl.config.json 中配置外,也可以通过环境变量来配置部分选项。
环境变量的优先级高于配置文件,如果同时设置了环境变量和配置文件,将使用环境变量的值。
支持的环境变量
NASL_IDE_VERSION: IDE 版本号,对应配置ideVersion字段export NASL_IDE_VERSION=4.4NASL_SERVER_BASE_URL: NASL 编译服务的基础 URL,对应配置serverBaseURL字段export NASL_SERVER_BASE_URL=https://nasl.lcap.163yun.comUSE_LCAP_OPENAPI: 是否使用 OpenAPI 方式调用(值为'true'时启用),对应配置useOPENAPI字段export USE_LCAP_OPENAPI=trueLCAP_OPENAPI_AK: LCAP OpenAPI Access Key(使用 OpenAPI 时必需),对应配置OPENAPI_AK字段export LCAP_OPENAPI_AK=your_access_keyLCAP_OPENAPI_SK: LCAP OpenAPI Secret Key(使用 OpenAPI 时必需),对应配置OPENAPI_SK字段export LCAP_OPENAPI_SK=your_secret_key
配置文件示例(包含 OpenAPI 配置)
{
"serverBaseURL": "https://sometenant.codewave.163.com",
"representation": "NaturalTS",
"namespaceResolution": "filename-as-namespace",
"ideVersion": "4.4",
"srcDir": "src",
"outDir": "out",
"useOPENAPI": true,
"OPENAPI_AK": "your_access_key",
"OPENAPI_SK": "your_secret_key"
}注意:如果配置了 useOPENAPI: true,则必须同时配置 OPENAPI_AK 和 OPENAPI_SK(可在配置文件中配置,或通过环境变量 LCAP_OPENAPI_AK 和 LCAP_OPENAPI_SK 配置)。
DEVELOPMENT
# 安装依赖
pnpm install
# 构建
pnpm run build
# 开发模式(监听文件变化)
pnpm run dev
# 代码检查
pnpm run lint
# 代码修复
pnpm run lint:fix
# 代码格式化
pnpm run format