css2class 2.0.0 → 2.0.1

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.
Files changed (40) hide show
  1. package/.github/workflows/deploy-docs.yml +53 -0
  2. package/.head_config.mjs +68 -0
  3. package/CONFIG.md +38 -1
  4. package/README.md +595 -633
  5. package/bin/class2css.js +32 -4
  6. package/common.css +1 -1
  7. package/configs/typography.config.js +1 -0
  8. package/docs/.vitepress/config.mjs +68 -65
  9. package/docs/guide/cli.md +97 -97
  10. package/docs/guide/config-template.md +16 -1
  11. package/docs/guide/config.md +129 -64
  12. package/docs/guide/faq.md +202 -202
  13. package/docs/guide/getting-started.md +86 -83
  14. package/docs/guide/incremental.md +164 -162
  15. package/docs/guide/rules-reference.md +73 -1
  16. package/docs/index.md +71 -68
  17. package/examples/weapp/README.md +15 -0
  18. package/examples/weapp/class2css.config.js +70 -0
  19. package/examples/weapp/src/placeholder.wxml +0 -0
  20. package/examples/weapp/styles.config.js +201 -0
  21. package/examples/web/README.md +25 -0
  22. package/examples/web/class2css.config.js +70 -0
  23. package/examples/web/demo.html +105 -0
  24. package/examples/web/src/placeholder.html +5 -0
  25. package/examples/web/styles.config.js +201 -0
  26. package/package.json +7 -2
  27. package/src/README.md +99 -0
  28. package/src/core/ConfigManager.js +440 -431
  29. package/src/core/FullScanManager.js +438 -430
  30. package/src/generators/DynamicClassGenerator.js +270 -72
  31. package/src/index.js +1091 -1046
  32. package/src/parsers/ClassParser.js +8 -2
  33. package/src/utils/CssFormatter.js +400 -47
  34. package/src/utils/UnitProcessor.js +4 -3
  35. package/src/watchers/ConfigWatcher.js +413 -413
  36. package/src/watchers/FileWatcher.js +148 -133
  37. package/src/writers/FileWriter.js +444 -302
  38. package/src/writers/UnifiedWriter.js +413 -370
  39. package/class2css.config.js +0 -124
  40. package/styles.config.js +0 -250
package/bin/class2css.js CHANGED
@@ -11,6 +11,7 @@ function parseArgs() {
11
11
  const args = process.argv.slice(2);
12
12
  const options = {
13
13
  config: './class2css.config.js',
14
+ configProvided: false,
14
15
  watch: true,
15
16
  help: false,
16
17
  version: false,
@@ -32,6 +33,7 @@ function parseArgs() {
32
33
  case '--config':
33
34
  case '-c':
34
35
  options.config = args[++i];
36
+ options.configProvided = true;
35
37
  break;
36
38
  case '--no-watch':
37
39
  options.watch = false;
@@ -161,11 +163,37 @@ function showVersion() {
161
163
  }
162
164
 
163
165
  // 检查配置文件是否存在
164
- function checkConfig(configPath) {
166
+ function checkConfig(configPath, configProvided) {
165
167
  const absolutePath = path.resolve(configPath);
166
168
  if (!fs.existsSync(absolutePath)) {
167
- console.error(`Configuration file not found: ${absolutePath}`);
168
- console.error('Please create a class2css.config.js file or specify a valid config path.');
169
+ const isDefaultConfig =
170
+ !configProvided && path.resolve('./class2css.config.js') === absolutePath;
171
+
172
+ console.error(`配置文件不存在:${absolutePath}`);
173
+
174
+ if (isDefaultConfig) {
175
+ console.error(`
176
+ 首次运行提示:
177
+ - 你当前没有在项目根目录找到默认配置:./class2css.config.js
178
+
179
+ 你可以选择以下任意一种方式启动:
180
+ 1) 直接运行内置示例(无需复制配置):
181
+ - npm run example:weapp
182
+ - npm run example:web
183
+
184
+ 2) 直接指定示例配置运行:
185
+ - node bin/class2css.js --config ./examples/weapp/class2css.config.js
186
+ - node bin/class2css.js --config ./examples/web/class2css.config.js
187
+
188
+ 3) 复制示例配置到项目根目录(推荐用于你自己的项目):
189
+ - 复制 ./examples/weapp/class2css.config.js -> ./class2css.config.js
190
+ - 复制 ./examples/weapp/styles.config.js -> ./styles.config.js
191
+ (或者选择 web 示例同路径)
192
+ `);
193
+ } else {
194
+ console.error('请创建 class2css.config.js,或使用 -c/--config 指定有效配置文件路径。');
195
+ }
196
+
169
197
  process.exit(1);
170
198
  }
171
199
  return absolutePath;
@@ -238,7 +266,7 @@ async function main() {
238
266
  }
239
267
 
240
268
  // 检查配置文件
241
- const configPath = checkConfig(options.config);
269
+ const configPath = checkConfig(options.config, options.configProvided);
242
270
 
243
271
  console.log('🚀 Starting Class2CSS...');
244
272
  console.log(`📁 Config: ${configPath}`);
package/common.css CHANGED
@@ -1,3 +1,3 @@
1
- .bg{
1
+ .bg-red{
2
2
  background-color: #f00;
3
3
  }
@@ -23,6 +23,7 @@ module.exports = {
23
23
  // 行高
24
24
  lineHeight: {
25
25
  leading: 'line-height',
26
+ lh: 'line-height',
26
27
  },
27
28
 
28
29
  // 字间距
@@ -1,65 +1,68 @@
1
- /*
2
- * @LastEditors: biz
3
- */
4
- import { defineConfig } from 'vitepress';
5
-
6
- export default defineConfig({
7
- title: 'Class2CSS',
8
- description: '企业级原子化CSS生成工具,支持智能单位处理、配置验证、性能缓存和向后兼容',
9
- lang: 'zh-CN',
10
-
11
- themeConfig: {
12
- nav: [
13
- { text: '文档', link: '/guide/getting-started' },
14
- { text: '参考', link: '/guide/config' },
15
- { text: 'FAQ', link: '/guide/faq' },
16
- ],
17
-
18
- sidebar: {
19
- '/guide/': [
20
- {
21
- text: '开始',
22
- items: [
23
- { text: '快速开始', link: '/guide/getting-started' },
24
- ],
25
- },
26
- {
27
- text: '核心概念',
28
- items: [
29
- { text: '类名语法与生成规则', link: '/guide/concepts' },
30
- { text: '单位与转换策略', link: '/guide/units' },
31
- { text: 'Important 与静态类', link: '/guide/important-and-static' },
32
- ],
33
- },
34
- {
35
- text: '参考',
36
- items: [
37
- { text: 'CLI', link: '/guide/cli' },
38
- { text: '规则参考', link: '/guide/rules-reference' },
39
- { text: '配置模板(可复制)', link: '/guide/config-template' },
40
- { text: '配置', link: '/guide/config' },
41
- ],
42
- },
43
- {
44
- text: '进阶',
45
- items: [
46
- { text: '增量模式(只增不删)', link: '/guide/incremental' },
47
- ],
48
- },
49
- {
50
- text: '帮助',
51
- items: [{ text: '常见问题', link: '/guide/faq' }],
52
- },
53
- ],
54
- },
55
-
56
- socialLinks: [{ icon: 'github', link: 'https://github.com/wnagchi/css2class' }],
57
-
58
- search: {
59
- provider: 'local',
60
- },
61
-
62
- outline: { level: [2, 3] },
63
- },
64
- });
65
-
1
+ /*
2
+ * @LastEditors: biz
3
+ */
4
+ import { defineConfig } from 'vitepress';
5
+
6
+ export default defineConfig({
7
+ // GitHub Pages(Project Pages)部署路径: https://<user>.github.io/<repo>/
8
+ // 所以这里必须设置为 `/<repo>/`(末尾带 /)
9
+ base: '/css2class/',
10
+ title: 'Class2CSS',
11
+ description: '企业级原子化CSS生成工具,支持智能单位处理、配置验证、性能缓存和向后兼容',
12
+ lang: 'zh-CN',
13
+
14
+ themeConfig: {
15
+ nav: [
16
+ { text: '文档', link: '/guide/getting-started' },
17
+ { text: '参考', link: '/guide/config' },
18
+ { text: 'FAQ', link: '/guide/faq' },
19
+ ],
20
+
21
+ sidebar: {
22
+ '/guide/': [
23
+ {
24
+ text: '开始',
25
+ items: [
26
+ { text: '快速开始', link: '/guide/getting-started' },
27
+ ],
28
+ },
29
+ {
30
+ text: '核心概念',
31
+ items: [
32
+ { text: '类名语法与生成规则', link: '/guide/concepts' },
33
+ { text: '单位与转换策略', link: '/guide/units' },
34
+ { text: 'Important 与静态类', link: '/guide/important-and-static' },
35
+ ],
36
+ },
37
+ {
38
+ text: '参考',
39
+ items: [
40
+ { text: 'CLI', link: '/guide/cli' },
41
+ { text: '规则参考', link: '/guide/rules-reference' },
42
+ { text: '配置模板(可复制)', link: '/guide/config-template' },
43
+ { text: '配置', link: '/guide/config' },
44
+ ],
45
+ },
46
+ {
47
+ text: '进阶',
48
+ items: [
49
+ { text: '增量模式(只增不删)', link: '/guide/incremental' },
50
+ ],
51
+ },
52
+ {
53
+ text: '帮助',
54
+ items: [{ text: '常见问题', link: '/guide/faq' }],
55
+ },
56
+ ],
57
+ },
58
+
59
+ socialLinks: [{ icon: 'github', link: 'https://github.com/wnagchi/css2class' }],
60
+
61
+ search: {
62
+ provider: 'local',
63
+ },
64
+
65
+ outline: { level: [2, 3] },
66
+ },
67
+ });
68
+
package/docs/guide/cli.md CHANGED
@@ -1,97 +1,97 @@
1
- # CLI 使用说明
2
-
3
- CLI 适合在 CI 或本地快速覆盖配置(例如临时换输入/输出目录)。你可以直接运行 `class2css`,或者在项目里通过 npm scripts 间接运行。
4
-
5
- ## 基本用法
6
-
7
- ```bash
8
- class2css [options]
9
- ```
10
-
11
- :::tip
12
- 如果你是通过本项目自带脚本运行(例如 `npm run start`),本质上也是把参数传给 `class2css`。
13
- :::
14
-
15
- ## 参数一览
16
-
17
- ### 配置与模式
18
-
19
- - **`-c, --config <path>`**:指定配置文件路径(默认 `./class2css.config.js`)
20
- - **`--no-watch`**:关闭监听模式(执行一次扫描后退出)
21
-
22
- ### 运行时覆盖(覆盖配置文件)
23
-
24
- - **`-i, --input <path>`**:覆盖输入目录(扫描/监听入口)
25
- - 目前该参数为**单路径**覆盖(对应 `multiFile.entry.path` 的单值用法)
26
- - 如需多目录/多文件入口,请在配置中使用 `multiFile.entry.path: string[]`
27
- - **`-o, --output <path>`**:覆盖输出目录
28
- - **`-f, --output-file <name>`**:覆盖输出文件名
29
- - **`-t, --output-type <type>`**:覆盖输出类型(`filePath` 或 `uniFile`)
30
-
31
- ### 文档服务
32
-
33
- - **`--docs`**:启用文档服务(与主程序并行运行)
34
- - **`--docs-port <port>`**:指定文档服务端口(默认 5173;若占用则自动寻找下一个可用端口)
35
- - **`--docs-host <host>`**:指定文档服务主机(默认 `127.0.0.1`)
36
- - **`--docs-open`**:启动后自动打开浏览器
37
- - **`--docs-only`**:只启动文档服务,不启动 class2css 主流程
38
-
39
- ### 其他
40
-
41
- - **`-h, --help`**:显示帮助信息
42
- - **`-v, --version`**:显示版本信息
43
-
44
- ## 使用示例
45
-
46
- ### 基本使用
47
-
48
- ```bash
49
- # 默认配置启动(监听模式)
50
- class2css
51
-
52
- # 使用自定义配置文件
53
- class2css -c ./my-config.js
54
-
55
- # 单次构建(不监听)
56
- class2css --no-watch
57
- ```
58
-
59
- ### 运行时覆盖
60
-
61
- ```bash
62
- # 覆盖输入和输出目录
63
- class2css -i ./src -o ./dist
64
-
65
- # 覆盖输入、输出和文件名
66
- class2css -i ./pages -o ./styles -f app.wxss
67
-
68
- # 覆盖输出类型
69
- class2css -i ./src -o ./dist -t uniFile
70
- ```
71
-
72
- ### 文档服务
73
-
74
- ```bash
75
- # 启动工具并同时开启文档服务
76
- class2css --docs
77
-
78
- # 启动文档服务并自动打开浏览器
79
- class2css --docs --docs-open
80
-
81
- # 指定文档服务端口
82
- class2css --docs --docs-port 8080
83
-
84
- # 只启动文档服务(不运行主程序)
85
- class2css --docs-only
86
- ```
87
-
88
- ## 注意事项
89
-
90
- 1. 运行时覆盖的参数会覆盖配置文件中的对应设置
91
- 2. 文档服务默认监听 `127.0.0.1`,只能本地访问
92
- 3. 如果指定端口被占用,工具会自动寻找下一个可用端口
93
- 4. 使用 `--docs-only` 时,不会执行任何 CSS 生成操作
94
-
95
- ## 下一步
96
-
97
- - 了解配置结构与最佳实践:阅读 [配置指南](./config.md)
1
+ # CLI 使用说明
2
+
3
+ CLI 适合在 CI 或本地快速覆盖配置(例如临时换输入/输出目录)。你可以直接运行 `class2css`,或者在项目里通过 npm scripts 间接运行。
4
+
5
+ ## 基本用法
6
+
7
+ ```bash
8
+ class2css [options]
9
+ ```
10
+
11
+ :::tip
12
+ 如果你是通过本项目自带脚本运行(例如 `npm run start`),本质上也是把参数传给 `class2css`。
13
+ :::
14
+
15
+ ## 参数一览
16
+
17
+ ### 配置与模式
18
+
19
+ - **`-c, --config <path>`**:指定配置文件路径(默认 `./class2css.config.js`)
20
+ - **`--no-watch`**:关闭监听模式(执行一次扫描后退出)
21
+
22
+ ### 运行时覆盖(覆盖配置文件)
23
+
24
+ - **`-i, --input <path>`**:覆盖输入目录(扫描/监听入口)
25
+ - 目前该参数为**单路径**覆盖(对应 `multiFile.entry.path` 的单值用法)
26
+ - 如需多目录/多文件入口,请在配置中使用 `multiFile.entry.path: string[]`
27
+ - **`-o, --output <path>`**:覆盖输出目录
28
+ - **`-f, --output-file <name>`**:覆盖输出文件名
29
+ - **`-t, --output-type <type>`**:覆盖输出类型(`filePath` 或 `uniFile`)
30
+
31
+ ### 文档服务
32
+
33
+ - **`--docs`**:启用文档服务(与主程序并行运行)
34
+ - **`--docs-port <port>`**:指定文档服务端口(默认 5173;若占用则自动寻找下一个可用端口)
35
+ - **`--docs-host <host>`**:指定文档服务主机(默认 `127.0.0.1`)
36
+ - **`--docs-open`**:启动后自动打开浏览器
37
+ - **`--docs-only`**:只启动文档服务,不启动 class2css 主流程
38
+
39
+ ### 其他
40
+
41
+ - **`-h, --help`**:显示帮助信息
42
+ - **`-v, --version`**:显示版本信息
43
+
44
+ ## 使用示例
45
+
46
+ ### 基本使用
47
+
48
+ ```bash
49
+ # 默认配置启动(监听模式)
50
+ class2css
51
+
52
+ # 使用自定义配置文件
53
+ class2css -c ./my-config.js
54
+
55
+ # 单次构建(不监听)
56
+ class2css --no-watch
57
+ ```
58
+
59
+ ### 运行时覆盖
60
+
61
+ ```bash
62
+ # 覆盖输入和输出目录
63
+ class2css -i ./src -o ./dist
64
+
65
+ # 覆盖输入、输出和文件名
66
+ class2css -i ./pages -o ./styles -f app.wxss
67
+
68
+ # 覆盖输出类型
69
+ class2css -i ./src -o ./dist -t uniFile
70
+ ```
71
+
72
+ ### 文档服务
73
+
74
+ ```bash
75
+ # 启动工具并同时开启文档服务
76
+ class2css --docs
77
+
78
+ # 启动文档服务并自动打开浏览器
79
+ class2css --docs --docs-open
80
+
81
+ # 指定文档服务端口
82
+ class2css --docs --docs-port 8080
83
+
84
+ # 只启动文档服务(不运行主程序)
85
+ class2css --docs-only
86
+ ```
87
+
88
+ ## 注意事项
89
+
90
+ 1. 运行时覆盖的参数会覆盖配置文件中的对应设置
91
+ 2. 文档服务默认监听 `127.0.0.1`,只能本地访问
92
+ 3. 如果指定端口被占用,工具会自动寻找下一个可用端口
93
+ 4. 使用 `--docs-only` 时,不会执行任何 CSS 生成操作
94
+
95
+ ## 下一步
96
+
97
+ - 了解配置结构与最佳实践:阅读 [配置指南](./config.md)
@@ -1,6 +1,11 @@
1
1
  # 配置模板(可复制)
2
2
 
3
- 本页把仓库里的 `class2css.config.js`(你现在已经跑通、并且覆盖了当前支持能力)整理成一份**可直接复制**的模板,避免开发者每个项目都从零拼配置。
3
+ 本仓库内置两套**可直接复制**的示例配置,避免每个项目都从零拼配置:
4
+
5
+ - **小程序(wxss / rpx)**:`examples/weapp/`
6
+ - **Web(css / px)**:`examples/web/`
7
+
8
+ 你可以直接复制对应目录里的 `class2css.config.js` + `styles.config.js` 到你的项目里使用(也可以用 `-c` 指定示例配置路径运行)。
4
9
 
5
10
  :::tip 配置结构说明
6
11
  配置已拆分为两个文件:
@@ -16,6 +21,16 @@
16
21
  - `multiFile.output.path` / `multiFile.output.fileName`:统一输出文件位置(`cssOutType='uniFile'` 时)
17
22
  :::
18
23
 
24
+ ## Web 场景配置差异(对照)
25
+
26
+ 如果你是 Web 项目(输出 css / 默认 px),主要差异在:
27
+
28
+ - `system.baseUnit: 'px'`
29
+ - `system.unitConversion: 1`
30
+ - `multiFile.entry.fileType: ['html', 'vue']`(按你项目模板扩展名调整)
31
+ - `multiFile.output.fileName: 'styles.css'`
32
+ - `multiFile.output.fileType: 'css'`(仅 `cssOutType='filePath'` 时生效)
33
+
19
34
  ## 工具配置文件(class2css.config.js)
20
35
 
21
36
  ```js