njk-tool 0.0.26 → 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.
@@ -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
- columns?: Array<{
28
- key: string;
29
- label: string;
30
- }>;
31
- data?: Array<object>;
32
- th?: Array<{
33
- key: string;
34
- width?: string;
35
- }>;
36
- tbody?: Array<object[]>;
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
- type ConfItem = BaseConfItem | ListConfItem | TableConfItem;
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.26",
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
- "peerDependencies": {
20
- "nunjucks": "^3.2.4"
21
- },
22
- "files": [
23
- "dist/bundle",
24
- "LICENSE",
25
- "README.md"
26
- ],
27
- "scripts": {
28
- "build": "rollup -c && rollup -c rollup.dts.config.js",
29
- "build:type": "rollup -c rollup.dts.config.js",
30
- "dev": "npx tsc && node ./dist/dev/main.js"
31
- },
32
- "keywords": [
33
- "nunjucks",
34
- "template"
35
- ],
36
- "packageManager": "pnpm@10.9.0",
37
- "dependencies": {
38
- "nodemailer": "^7.0.5",
39
- "nunjucks": "^3.2.4"
40
- },
41
- "devDependencies": {
42
- "@rollup/plugin-commonjs": "^28.0.6",
43
- "@rollup/plugin-json": "^6.1.0",
44
- "@rollup/plugin-node-resolve": "^16.0.1",
45
- "@rollup/plugin-typescript": "^12.1.4",
46
- "@types/express": "^5.0.2",
47
- "@types/node": "^22.15.30",
48
- "@types/nodemailer": "^6.4.17",
49
- "@types/nunjucks": "^3.2.6",
50
- "chokidar": "3.6.0",
51
- "dotenv": "^16.5.0",
52
- "express": "^5.1.0",
53
- "rollup": "^4.45.1",
54
- "rollup-plugin-copy": "^3.5.0",
55
- "rollup-plugin-dts": "^6.2.1",
56
- "tslib": "^2.8.1",
57
- "typescript": "^5.8.3"
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
- zhzddzfhypwzfbji
2
-
3
- ---
4
- ```javascript
5
- function macro() {
6
- for (var _len = arguments.length, macroArgs = new Array(_len), _key = 0; _key < _len; _key++) {
7
- macroArgs[_key] = arguments[_key]; } var argCount = numArgs(macroArgs); var args; var kwargs = getKeywordArgs(macroArgs); if (argCount > argNames.length) { args = macroArgs.slice(0, argNames.length); // Positional arguments that should be passed in as // keyword arguments (essentially default values)
8
- macroArgs.slice(args.length, argCount).forEach(function (val, i) { if (i < kwargNames.length) { kwargs[kwargNames[i]] = val; } }); args.push(kwargs); } else if (argCount < argNames.length) { args = macroArgs.slice(0, argCount); for (var i = argCount; i < argNames.length; i++) { var arg = argNames[i]; // Keyword arguments that should be passed as // positional arguments, i.e. the caller explicitly // used the name of a positional arg args.push(kwargs[arg]); delete kwargs[arg]; } args.push(kwargs); } else { args = macroArgs; } return func.apply(this, args); }
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