Skip to content

Commit fee7525

Browse files
committed
feat: update options
1 parent 2972ecc commit fee7525

File tree

6 files changed

+94
-20
lines changed

6 files changed

+94
-20
lines changed

README-zh_CN.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,25 @@ const result = inlineStylesIntoHtml(html, css)
143143
// 结果:<div style="width: 160px; margin-top: 16px; height: calc(100vh - 64px); color: #888888;"></div>
144144
```
145145

146+
## 🧩 API
147+
148+
### inlineStyles(html, css, options)
149+
150+
#### options.remToPx
151+
152+
是否将 `rem` 转换为 `px`
153+
154+
类型:`boolean`
155+
默认值:`true`
156+
157+
#### options.convertCssVariables
158+
159+
是否将 CSS 变量转换为静态。
160+
161+
类型:`boolean`
162+
默认值:`true`
163+
146164
### 参考
147165

148166
- [Tailwind CSS for Email](https://github.com/jakobo/codedrift/discussions/104)
149-
- [juice](https://github.com/Automattic/juice)
167+
- [juice](https://github.com/Automattic/juice)

README.md

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,12 @@ You can also add -D to install it as a development dependency, depending on your
5656
You can convert CSS units from `rem` to `px`.
5757

5858
```javascript
59+
import inlineStyles from 'inline-html-styles'
60+
5961
const html = `<div class="my-style"></div>`
6062
const css = `.my-style { width: 10rem }`
6163

62-
const result = inlineStylesIntoHtml(html, css)
64+
const result = inlineStyles(html, css)
6365
// Result: <div style="width: 160px;"></div>
6466
```
6567

@@ -68,10 +70,12 @@ const result = inlineStylesIntoHtml(html, css)
6870
The function can simplify basic `calc` expressions in your CSS.
6971

7072
```javascript
73+
import inlineStyles from 'inline-html-styles'
74+
7175
const html = `<div class="my-style"></div>`
7276
const css = `.my-style { width: calc(20px - 4px) }`
7377

74-
const result = inlineStylesIntoHtml(html, css)
78+
const result = inlineStyles(html, css)
7579
// Result: <div style="width: 16px;"></div>
7680
```
7781

@@ -80,10 +84,12 @@ const result = inlineStylesIntoHtml(html, css)
8084
Even nested `calc` expressions can be simplified.
8185

8286
```javascript
87+
import inlineStyles from 'inline-html-styles'
88+
8389
const html = `<div class="my-style"></div>`
8490
const css = `.my-style { width: calc(20px - calc(10px - 6px)) }`
8591

86-
const result = inlineStylesIntoHtml(html, css)
92+
const result = inlineStyles(html, css)
8793
// Result: <div style="width: 16px;"></div>
8894
```
8995

@@ -92,10 +98,12 @@ const result = inlineStylesIntoHtml(html, css)
9298
When `calc` expressions involve different units, they will not be simplified but will be converted appropriately.
9399

94100
```javascript
101+
import inlineStyles from 'inline-html-styles'
102+
95103
const html = `<div class="my-style"></div>`
96104
const css = `.my-style { width: calc(100vh - 4rem) }`
97105

98-
const result = inlineStylesIntoHtml(html, css)
106+
const result = inlineStyles(html, css)
99107
// Result: <div style="width: calc(100vh - 64px);"></div>
100108
```
101109

@@ -104,10 +112,12 @@ const result = inlineStylesIntoHtml(html, css)
104112
CSS variables that are numerical can also be processed. And participate in calc Simplify
105113

106114
```javascript
115+
import inlineStyles from 'inline-html-styles'
116+
107117
const html = `<div class="my-style"></div>`
108118
const css = `.my-style { --tw-space-y: 2; margin-top:calc(.5rem * var(--tw-space-y)) }`
109119

110-
const result = inlineStylesIntoHtml(html, css)
120+
const result = inlineStyles(html, css)
111121
// Result: <div style="margin-top: 16px;"></div>
112122
```
113123

@@ -116,10 +126,12 @@ const result = inlineStylesIntoHtml(html, css)
116126
CSS color variables can be applied as well.
117127

118128
```javascript
129+
import inlineStyles from 'inline-html-styles'
130+
119131
const html = `<div class="my-style"></div>`
120132
const css = `.my-style { --my-color: #888888; color: var(--my-color) }`
121133

122-
const result = inlineStylesIntoHtml(html, css)
134+
const result = inlineStyles(html, css)
123135
// Result: <div style="color: #888888;"></div>
124136
```
125137

@@ -128,6 +140,8 @@ const result = inlineStylesIntoHtml(html, css)
128140
You can also use multiple properties, including custom properties (CSS variables), in a single style rule.
129141

130142
```javascript
143+
import inlineStyles from 'inline-html-styles'
144+
131145
const html = `<div class="my-style"></div>`
132146
const css = `
133147
.my-style {
@@ -139,11 +153,29 @@ const css = `
139153
color: var(--my-color);
140154
}`
141155

142-
const result = inlineStylesIntoHtml(html, css)
156+
const result = inlineStyles(html, css)
143157
// Result: <div style="width: 160px; margin-top: 16px; height: calc(100vh - 64px); color: #888888;"></div>
144158
```
145159

146-
### Reference
160+
## 🧩 API
161+
162+
### inlineStyles(html, css, options)
163+
164+
#### options.remToPx
165+
166+
Whether to convert `rem` to `px`.
167+
168+
Type: `boolean`
169+
Default: `true`
170+
171+
#### options.convertCssVariables
172+
173+
Whether to convert CSS variables to static.
174+
175+
Type: `boolean`
176+
Default: `true`
177+
178+
## Reference
147179

148180
- [Tailwind CSS for Email](https://github.com/jakobo/codedrift/discussions/104)
149181
- [juice](https://github.com/Automattic/juice)

dist/index.d.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
1+
/**
2+
* 配置
3+
* Config
4+
* @interface Config
5+
* @property {boolean} remToPx 是否将 CSS 单位 rem 转换为 px
6+
* @property {boolean} convertCssVariables 是否将 CSS 变量转换为常量
7+
*/
8+
interface Options {
9+
remToPx?: boolean;
10+
convertCssVariables?: boolean;
11+
}
112
/**
213
* 将 CSS 处理并内联到 HTML 中
314
* Process and inline CSS into HTML
415
* @param {string} html
516
* @param {string} css
6-
* @param {boolean} remToPx 是否将 rem 转换为 px / Convert CSS units from rem to px?
17+
* @param {Options} options
718
* @returns {string}
819
*/
9-
declare const inlineStyles: (html: string, css: string, remToPx?: boolean) => string;
20+
declare const inlineStyles: (html: string, css: string, options?: Options) => string;
1021
export default inlineStyles;

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "inline-html-styles",
3-
"version": "1.0.3",
3+
"version": "1.1.0",
44
"description": "Inline (Tailwind) CSS stylesheets into HTML style attributes.",
55
"author": "RayJason <https://github.com/RayJason>",
66
"license": "MIT",

src/index.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,29 @@ const handleCssVariables = (style: string): string => {
4545
return styleWithoutDefinitions || ''
4646
}
4747

48+
/**
49+
* 配置
50+
* Config
51+
* @interface Config
52+
* @property {boolean} remToPx 是否将 CSS 单位 rem 转换为 px
53+
* @property {boolean} convertCssVariables 是否将 CSS 变量转换为常量
54+
*/
55+
interface Options {
56+
remToPx?: boolean
57+
convertCssVariables?: boolean
58+
}
59+
4860
/**
4961
* 将 CSS 处理并内联到 HTML 中
5062
* Process and inline CSS into HTML
5163
* @param {string} html
5264
* @param {string} css
53-
* @param {boolean} remToPx 是否将 rem 转换为 px / Convert CSS units from rem to px?
65+
* @param {Options} options
5466
* @returns {string}
5567
*/
56-
const inlineStyles = (
57-
html: string,
58-
css: string,
59-
remToPx: boolean = true
60-
): string => {
68+
const inlineStyles = (html: string, css: string, options?: Options): string => {
69+
const { remToPx = true, convertCssVariables = true } = options || {}
70+
6171
// 将 CSS 单位 rem 转换为 px
6272
// Convert CSS units from rem to px
6373
const basePx = 16
@@ -71,7 +81,10 @@ const inlineStyles = (
7181

7282
// 将 CSS 变量转换为常量
7383
// Convert CSS variables to static
74-
const cssWithoutVariables = handleCssVariables(cssWithUnitConversion)
84+
let cssWithoutVariables = cssWithUnitConversion
85+
if (convertCssVariables) {
86+
cssWithoutVariables = handleCssVariables(cssWithUnitConversion)
87+
}
7588

7689
// 简化 calc() 表达式
7790
// Simplify calc() expressions

0 commit comments

Comments
 (0)