njk-tool 0.0.27 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +11 -0
- package/dist/bundle/app.min.cjs +131 -113
- package/dist/bundle/app.min.cjs.map +1 -1
- package/dist/bundle/app.min.js +131 -113
- package/dist/bundle/app.min.js.map +1 -1
- package/dist/bundle/type.d.ts +63 -12
- package/package.json +58 -59
- package/readme.md +87 -9
package/dist/bundle/type.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 组件标签类型枚举
|
|
3
|
+
* 包含所有支持的组件类型
|
|
4
|
+
*/
|
|
1
5
|
declare enum TagType {
|
|
2
6
|
Title = "title",
|
|
3
7
|
Date = "date",
|
|
@@ -7,8 +11,16 @@ declare enum TagType {
|
|
|
7
11
|
Toc = "toc",
|
|
8
12
|
Notice = "notice",
|
|
9
13
|
Block = "block",
|
|
10
|
-
Table = "table"
|
|
14
|
+
Table = "table",
|
|
15
|
+
Divider = "divider",
|
|
16
|
+
Tag = "tag",
|
|
17
|
+
ContentTitle = "title_content",
|
|
18
|
+
Html = "html"
|
|
11
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* 基础配置接口
|
|
22
|
+
* 所有组件共享的基础属性
|
|
23
|
+
*/
|
|
12
24
|
interface BaseConfItem {
|
|
13
25
|
tag: TagType;
|
|
14
26
|
type?: string;
|
|
@@ -18,24 +30,63 @@ interface BaseConfItem {
|
|
|
18
30
|
cssFiles?: string[];
|
|
19
31
|
jsFiles?: string[];
|
|
20
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* 目录和代码块配置
|
|
35
|
+
*/
|
|
21
36
|
interface ListConfItem extends BaseConfItem {
|
|
22
37
|
tag: TagType.Toc | TagType.Block;
|
|
23
38
|
data?: Array<object>;
|
|
24
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* 表格配置接口
|
|
42
|
+
* 支持两种数据格式:
|
|
43
|
+
* 1. 对象数组格式:columns + data
|
|
44
|
+
* 2. 二维数组格式:th + tbody
|
|
45
|
+
*/
|
|
25
46
|
interface TableConfItem extends BaseConfItem {
|
|
26
47
|
tag: TagType.Table;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
48
|
+
title?: string;
|
|
49
|
+
columns?: string[];
|
|
50
|
+
data?: Record<string, any>[];
|
|
51
|
+
th?: string[];
|
|
52
|
+
tbody?: any[][];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 标签组件配置
|
|
56
|
+
*/
|
|
57
|
+
interface TagConfItem extends BaseConfItem {
|
|
58
|
+
tag: TagType.Tag;
|
|
59
|
+
color?: string;
|
|
60
|
+
size?: 'small' | 'medium' | 'large';
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 内容标题配置
|
|
64
|
+
*/
|
|
65
|
+
interface ContentTitleConfItem extends BaseConfItem {
|
|
66
|
+
tag: TagType.ContentTitle;
|
|
67
|
+
type?: 'h3' | 'hover_h3' | 'remain_h3' | 'hover' | 'remain';
|
|
68
|
+
hover?: boolean;
|
|
69
|
+
remain?: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 分隔符配置
|
|
73
|
+
*/
|
|
74
|
+
interface DividerConfItem extends BaseConfItem {
|
|
75
|
+
tag: TagType.Divider;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* HTML 组件配置
|
|
79
|
+
* 直接嵌入 HTML 代码,适用于邮件模板
|
|
80
|
+
*/
|
|
81
|
+
interface HtmlConfItem extends BaseConfItem {
|
|
82
|
+
tag: TagType.Html;
|
|
83
|
+
html?: string;
|
|
84
|
+
code?: string;
|
|
37
85
|
}
|
|
38
|
-
|
|
86
|
+
/**
|
|
87
|
+
* 组件配置联合类型
|
|
88
|
+
*/
|
|
89
|
+
type ConfItem = BaseConfItem | ListConfItem | TableConfItem | TagConfItem | ContentTitleConfItem | DividerConfItem | HtmlConfItem;
|
|
39
90
|
|
|
40
91
|
interface Options {
|
|
41
92
|
cssUrl?: string | string[];
|
package/package.json
CHANGED
|
@@ -1,59 +1,58 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "njk-tool",
|
|
3
|
-
"version": "0.0
|
|
4
|
-
"description": "nunjucks no JavaScript 模板工具,兼容jinja",
|
|
5
|
-
"types": "dist/bundle/type.d.ts",
|
|
6
|
-
"exports": {
|
|
7
|
-
".": {
|
|
8
|
-
"require": "./dist/bundle/app.min.cjs",
|
|
9
|
-
"import": "./dist/bundle/app.min.js"
|
|
10
|
-
}
|
|
11
|
-
},
|
|
12
|
-
"author": "zggong",
|
|
13
|
-
"license": "MIT",
|
|
14
|
-
"repository": {
|
|
15
|
-
"type": "git",
|
|
16
|
-
"url": "https://github.com/SHgzg/njk-tool.git"
|
|
17
|
-
},
|
|
18
|
-
"type": "module",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"@rollup/plugin-
|
|
43
|
-
"@rollup/plugin-
|
|
44
|
-
"@rollup/plugin-
|
|
45
|
-
"@
|
|
46
|
-
"@types/
|
|
47
|
-
"@types/
|
|
48
|
-
"@types/
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"rollup": "^
|
|
54
|
-
"rollup-plugin-
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "njk-tool",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "nunjucks no JavaScript 模板工具,兼容jinja",
|
|
5
|
+
"types": "dist/bundle/type.d.ts",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"require": "./dist/bundle/app.min.cjs",
|
|
9
|
+
"import": "./dist/bundle/app.min.js"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"author": "zggong",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/SHgzg/njk-tool.git"
|
|
17
|
+
},
|
|
18
|
+
"type": "module",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist/bundle",
|
|
21
|
+
"LICENSE",
|
|
22
|
+
"README.md",
|
|
23
|
+
".env.example"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "rollup -c && rollup -c rollup.dts.config.js",
|
|
27
|
+
"build:type": "rollup -c rollup.dts.config.js",
|
|
28
|
+
"dev": "npx tsc && node ./dist/dev/main.js",
|
|
29
|
+
"predev": "npm run build"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"nunjucks",
|
|
33
|
+
"template"
|
|
34
|
+
],
|
|
35
|
+
"packageManager": "pnpm@10.9.0",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"nodemailer": "^7.0.5",
|
|
38
|
+
"nunjucks": "^3.2.4"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@rollup/plugin-commonjs": "^28.0.6",
|
|
42
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
43
|
+
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
44
|
+
"@rollup/plugin-typescript": "^12.1.4",
|
|
45
|
+
"@types/express": "^5.0.2",
|
|
46
|
+
"@types/node": "^22.19.7",
|
|
47
|
+
"@types/nodemailer": "^6.4.17",
|
|
48
|
+
"@types/nunjucks": "^3.2.6",
|
|
49
|
+
"chokidar": "3.6.0",
|
|
50
|
+
"dotenv": "^16.5.0",
|
|
51
|
+
"express": "^5.1.0",
|
|
52
|
+
"rollup": "^4.45.1",
|
|
53
|
+
"rollup-plugin-copy": "^3.5.0",
|
|
54
|
+
"rollup-plugin-dts": "^6.2.1",
|
|
55
|
+
"tslib": "^2.8.1",
|
|
56
|
+
"typescript": "^5.8.3"
|
|
57
|
+
}
|
|
58
|
+
}
|
package/readme.md
CHANGED
|
@@ -1,9 +1,87 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# njk-tool
|
|
2
|
+
|
|
3
|
+
> Nunjucks 模板渲染工具,用于快速生成 HTML 报告和文档
|
|
4
|
+
|
|
5
|
+
## 特性
|
|
6
|
+
|
|
7
|
+
- 🎨 **丰富的组件系统** - 标题、表格、提示框、目录等
|
|
8
|
+
- 📧 **邮件集成** - 支持将渲染结果直接发送邮件
|
|
9
|
+
- 🔧 **零 JavaScript 编程** - 通过 JSON 配置即可生成 HTML
|
|
10
|
+
- 📱 **响应式设计** - 内置移动端适配样式
|
|
11
|
+
|
|
12
|
+
## 快速开始
|
|
13
|
+
|
|
14
|
+
### 安装
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install njk-tool
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 基础用法
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { njkRenderSync } from 'njk-tool';
|
|
24
|
+
|
|
25
|
+
const html = njkRenderSync([
|
|
26
|
+
{
|
|
27
|
+
tag: 'title',
|
|
28
|
+
type: 'h1',
|
|
29
|
+
text: '我的报告'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
tag: 'table',
|
|
33
|
+
columns: ['Name', 'Age'],
|
|
34
|
+
data: [
|
|
35
|
+
{ Name: 'Alice', Age: 25 },
|
|
36
|
+
{ Name: 'Bob', Age: 30 }
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
]);
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 开发
|
|
43
|
+
|
|
44
|
+
### 安装依赖
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pnpm install
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 启动开发服务器
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pnpm run dev
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
访问 http://localhost:3007/example/report_test 查看示例
|
|
57
|
+
|
|
58
|
+
### 配置邮件功能(可选)
|
|
59
|
+
|
|
60
|
+
复制 `.env.example` 为 `.env` 并配置:
|
|
61
|
+
|
|
62
|
+
```env
|
|
63
|
+
SMTP_HOST=smtp.qq.com
|
|
64
|
+
SMTP_PORT=465
|
|
65
|
+
SMTP_SECURE=true
|
|
66
|
+
SMTP_USER=your@qq.com
|
|
67
|
+
SMTP_PASS=your授权码
|
|
68
|
+
SMTP_TO=receiver@example.com
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 组件列表
|
|
72
|
+
|
|
73
|
+
- `title` - 标题组件(h1-h6)
|
|
74
|
+
- `table` - 表格组件
|
|
75
|
+
- `notice` - 提示框(info/success/warning/error)
|
|
76
|
+
- `date` - 日期显示
|
|
77
|
+
- `checker` - 检查人信息
|
|
78
|
+
- `toc` - 目录导航
|
|
79
|
+
- `block` - 代码块
|
|
80
|
+
- `text` - 文本内容
|
|
81
|
+
- `divider` - 分隔线
|
|
82
|
+
- `tag` - 标签
|
|
83
|
+
- `title_content` - 可折叠内容块
|
|
84
|
+
|
|
85
|
+
## License
|
|
86
|
+
|
|
87
|
+
MIT
|