@rebuildjs/tailwindcss 0.10.59 → 0.11.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/package.json CHANGED
@@ -1,69 +1,71 @@
1
1
  {
2
- "name": "@rebuildjs/tailwindcss",
3
- "version": "0.10.59",
4
- "description": "Tailwindcss integration with rebuildjs",
5
- "keywords": [
6
- "tailwindcss",
7
- "reactive",
8
- "multi page apps",
9
- "web app",
10
- "web server",
11
- "esbuild",
12
- "rmemo",
13
- "ctx-core"
14
- ],
15
- "homepage": "https://github.com/rebuildjs/tailwindcss#readme",
16
- "bugs": {
17
- "url": "https://github.com/rebuildjs/tailwindcss/issues"
18
- },
19
- "repository": {
20
- "type": "git",
21
- "url": "https://github.com/rebuildjs/tailwindcss.git"
22
- },
23
- "license": "Apache-2.0",
24
- "author": {
25
- "name": "Brian Takita",
26
- "url": "https://briantakita.me",
27
- "email": "info+rebuildjs-tailwindcss@briantakita.me"
28
- },
29
- "type": "module",
30
- "files": [
31
- "*.d.ts",
32
- "*.js",
33
- "*.json",
34
- "rebuild_tailwind_plugin"
35
- ],
36
- "types": "./index.d.ts",
37
- "exports": {
38
- ".": "./index.js",
39
- "./package.json": "./package.json"
40
- },
41
- "dependencies": {
42
- "ctx-core": "*",
43
- "esbuild": "^0.27.3",
44
- "postcss": "latest",
45
- "rebuildjs": "*",
46
- "tailwindcss": "^3.4.18"
47
- },
48
- "devDependencies": {
49
- "c8": "^11.0.0",
50
- "esmock": "^2.7.3",
51
- "relementjs": "*",
52
- "tsx": "^4.21.0",
53
- "typescript": "next",
54
- "uvu": "^0.5.6"
55
- },
56
- "publishConfig": {
57
- "access": "public"
58
- },
59
- "sideEffects": false,
60
- "scripts": {
61
- "build": ":",
62
- "clean": ":",
63
- "exec": "$@",
64
- "test": "pnpm run /^test:/",
65
- "test:types": "tsc --noEmit",
66
- "test:unit": "NODE_OPTIONS=--loader=esmock tsx node_modules/uvu/bin.js . '\\.test\\.(ts|js)$'",
67
- "disable:test:unit:coverage": "c8 pnpm test:unit"
68
- }
69
- }
2
+ "name": "@rebuildjs/tailwindcss",
3
+ "version": "0.11.0",
4
+ "description": "Tailwindcss integration with rebuildjs",
5
+ "keywords": [
6
+ "tailwindcss",
7
+ "reactive",
8
+ "multi page apps",
9
+ "web app",
10
+ "web server",
11
+ "esbuild",
12
+ "rmemo",
13
+ "ctx-core"
14
+ ],
15
+ "homepage": "https://github.com/rebuildjs/tailwindcss#readme",
16
+ "bugs": {
17
+ "url": "https://github.com/rebuildjs/tailwindcss/issues"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/rebuildjs/tailwindcss.git"
22
+ },
23
+ "license": "Apache-2.0",
24
+ "author": {
25
+ "name": "Brian Takita",
26
+ "url": "https://briantakita.me",
27
+ "email": "info+rebuildjs-tailwindcss@briantakita.me"
28
+ },
29
+ "type": "module",
30
+ "files": [
31
+ "*.d.ts",
32
+ "*.js",
33
+ "*.json",
34
+ "rebuild_tailwind_plugin"
35
+ ],
36
+ "types": "./index.d.ts",
37
+ "exports": {
38
+ ".": "./index.js",
39
+ "./package.json": "./package.json"
40
+ },
41
+ "scripts": {
42
+ "build": ":",
43
+ "clean": ":",
44
+ "exec": "$@",
45
+ "prepublishOnly": "bun run clean && bun run build && bun run test && publint && attw --pack --ignore-rules cjs-resolves-to-esm",
46
+ "test": "bun run test:types && bun run test:unit",
47
+ "test:types": "tsc --noEmit",
48
+ "test:unit": "NODE_OPTIONS=--loader=esmock tsx node_modules/uvu/bin.js . '\\.test\\.(ts|js)$'",
49
+ "disable:test:unit:coverage": "c8 bun run test:unit"
50
+ },
51
+ "dependencies": {
52
+ "ctx-core": "*",
53
+ "esbuild": "^0.27.3",
54
+ "postcss": "latest",
55
+ "rebuildjs": "*",
56
+ "@tailwindcss/postcss": "^4.2.1",
57
+ "tailwindcss": "^4.2.1"
58
+ },
59
+ "devDependencies": {
60
+ "c8": "^11.0.0",
61
+ "esmock": "^2.7.3",
62
+ "relementjs": "*",
63
+ "tsx": "^4.21.0",
64
+ "typescript": "next",
65
+ "uvu": "^0.5.6"
66
+ },
67
+ "publishConfig": {
68
+ "access": "public"
69
+ },
70
+ "sideEffects": false
71
+ }
@@ -1,7 +1,6 @@
1
1
  import type { Plugin } from 'esbuild'
2
2
  import type { AcceptedPlugin } from 'postcss'
3
3
  import type { ctx__be_T, ctx__get_T, ctx__set_T, sig_T } from 'rebuildjs/server'
4
- import type { Config } from 'tailwindcss'
5
4
  export declare const rebuild_tailwind_plugin__build_id$_:ctx__be_T<sig_T<string|undefined>, 'app'>
6
5
  export declare const rebuild_tailwind_plugin__build_id_:ctx__get_T<string|undefined, 'app'>
7
6
  export declare const rebuild_tailwind_plugin__build_id__set:ctx__set_T<string|undefined, 'app'>
@@ -11,5 +10,4 @@ export declare function rebuildjs_tailwind__ready__wait(timeout?:number):Promise
11
10
  export declare function rebuild_tailwind_plugin_(config?:rebuild_tailwind_plugin__config_T):Plugin
12
11
  export type rebuild_tailwind_plugin__config_T = {
13
12
  postcss_plugin_a1_?:(tailwindcss_plugin:AcceptedPlugin)=>AcceptedPlugin[]
14
- tailwindcss_config?:Config
15
13
  }
@@ -19,7 +19,7 @@ import postcss from 'postcss'
19
19
  import {
20
20
  app_ctx,
21
21
  browser__metafile_,
22
- browser__metafile__update,
22
+ browser__metafile__persist,
23
23
  browser__output_,
24
24
  browser__output__relative_path_,
25
25
  build_id_,
@@ -30,12 +30,12 @@ import {
30
30
  rebuildjs__esbuild__done__wait,
31
31
  rebuildjs__ready__add,
32
32
  server__metafile_,
33
- server__metafile__update,
33
+ server__metafile__persist,
34
34
  server__output_,
35
35
  server__output__relative_path_,
36
36
  server__output__relative_path_M_middleware_ctx_
37
37
  } from 'rebuildjs/server'
38
- import tailwind from 'tailwindcss'
38
+ import tailwindcss from '@tailwindcss/postcss'
39
39
  export const [
40
40
  rebuild_tailwind_plugin__build_id$_,
41
41
  rebuild_tailwind_plugin__build_id_,
@@ -67,6 +67,7 @@ export function rebuildjs_tailwind__ready__wait(timeout) {
67
67
  * @private
68
68
  */
69
69
  export function rebuild_tailwind_plugin_(config) {
70
+ const tailwindcss_plugin = tailwindcss()
70
71
  return { name: 'rebuild_tailwind_plugin', setup: setup_() }
71
72
  function setup_() {
72
73
  rebuildjs__ready__add(rebuildjs_tailwind__ready$_)
@@ -124,15 +125,14 @@ export function rebuild_tailwind_plugin_(config) {
124
125
  Promise.all(server_output__process_promise_a1),
125
126
  Promise.all(browser_output__process_promise_a1)
126
127
  ])
127
- const update_promise_a1 = []
128
- if (server__metafile_updated_a1.some($=>$)) {
129
- update_promise_a1.push(server__metafile__update(_server__metafile))
130
- }
131
- if (browser__metafile_updated_a1.some($=>$)) {
132
- update_promise_a1.push(browser__metafile__update(_browser__metafile))
133
- }
134
- if (update_promise_a1.length) {
135
- await cmd(Promise.all(update_promise_a1))
128
+ if (
129
+ server__metafile_updated_a1.some($=>$)
130
+ || browser__metafile_updated_a1.some($=>$)
131
+ ) {
132
+ await Promise.all([
133
+ server__metafile__persist(),
134
+ browser__metafile__persist(),
135
+ ])
136
136
  }
137
137
  rebuild_tailwind_plugin__build_id__set(app_ctx, build_id)
138
138
  } catch (err) {
@@ -151,6 +151,11 @@ export function rebuild_tailwind_plugin_(config) {
151
151
  let metafile_updated = false
152
152
  const cssBundle = output?.cssBundle
153
153
  if (!cssBundle) return metafile_updated
154
+ const output_hash =
155
+ basename(output__relative_path, '.js')
156
+ .split('-')
157
+ .slice(-1)[0]
158
+ if (cssBundle.includes('_' + output_hash)) return metafile_updated
154
159
  const esbuild_cssBundle = output.esbuild_cssBundle ?? cssBundle
155
160
  const esbuild_cssBundle_path = join(cwd_(app_ctx), esbuild_cssBundle)
156
161
  await cmd(file_exists__waitfor(
@@ -159,25 +164,18 @@ export function rebuild_tailwind_plugin_(config) {
159
164
  ()=>cmd(sleep(0))))
160
165
  const esbuild_cssBundle_map_path = esbuild_cssBundle_path + '.map'
161
166
  const esbuild_cssBundle_map_exists = await cmd(file_exists_(esbuild_cssBundle_map_path))
162
- const output_hash =
163
- basename(output__relative_path, '.js')
164
- .split('-')
165
- .slice(-1)[0]
166
- const tailwind_instance = tailwind({
167
- ...config?.tailwindcss_config,
168
- content: [
169
- ...output.cssBundle_content.map(content__relative_path=>
170
- join(cwd_(app_ctx), content__relative_path)),
171
- ...(config?.content ?? [])
172
- ]
173
- })
167
+ let esbuild_css = (await readFile(esbuild_cssBundle_path)).toString()
168
+ esbuild_css = esbuild_css
169
+ .replace(/@tailwind\s+base\s*;/g, '@import "tailwindcss";')
170
+ .replace(/@tailwind\s+components\s*;/g, '')
171
+ .replace(/@tailwind\s+utilities\s*;/g, '')
174
172
  const result = await file_exists__waitfor(
175
173
  async ()=>cmd(
176
174
  postcss(
177
- config?.postcss_plugin_a1_?.(tailwind_instance)
178
- ?? [tailwind_instance]
175
+ config?.postcss_plugin_a1_?.(tailwindcss_plugin)
176
+ ?? [tailwindcss_plugin]
179
177
  ).process(
180
- await readFile(esbuild_cssBundle_path),
178
+ esbuild_css,
181
179
  {
182
180
  from: esbuild_cssBundle_path,
183
181
  to: join(cwd_(app_ctx), cssBundle),
@@ -211,7 +209,9 @@ export function rebuild_tailwind_plugin_(config) {
211
209
  output.cssBundle = annotated_cssBundle
212
210
  if (metafile_updated) {
213
211
  metafile.outputs[annotated_cssBundle] = metafile.outputs[cssBundle]
214
- metafile.outputs[annotated_cssBundle + '.map'] = metafile.outputs[cssBundle + '.map']
212
+ if (map_json) {
213
+ metafile.outputs[annotated_cssBundle + '.map'] = metafile.outputs[cssBundle + '.map']
214
+ }
215
215
  }
216
216
  return metafile_updated
217
217
  }
@@ -81,7 +81,7 @@ test('rebuild_tailwind_plugin_|default', async ()=>{
81
81
  equal(rebuildjs__ready__add__ready$__a1_(app_ctx), [rebuildjs_tailwind__ready$_])
82
82
  server__build_context = await rebuildjs_server__build({ plugins: [rebuild_tailwind_plugin] })
83
83
  browser__build_context = await rebuildjs_browser__build({ plugins: [rebuild_tailwind_plugin] })
84
- await rebuildjs__ready__wait()
84
+ await rebuildjs__ready__wait(30_000)
85
85
  const server__metafile = server__metafile_(app_ctx)!
86
86
  const server__output__relative_path =
87
87
  Object.keys(server__metafile.outputs)
@@ -115,16 +115,16 @@ test('rebuild_tailwind_plugin_|default', async ()=>{
115
115
  equal(cssBundle_text.includes('.text-green-500'), true)
116
116
  equal(cssBundle_text.includes('.font-bold'), true)
117
117
  equal(cssBundle_text.includes('.text-red'), false)
118
- equal(cssBundle_text.includes('.font-light'), false)
118
+ equal(cssBundle_text.includes('.xyznonexistent'), false)
119
119
  equal(esbuild_cssBundle_text.includes('@tailwind base;'), true)
120
120
  equal(esbuild_cssBundle_text.includes('@tailwind components;'), true)
121
121
  equal(esbuild_cssBundle_text.includes('@tailwind utilities;'), true)
122
122
  equal(esbuild_cssBundle_text.includes('.text-green-500'), false)
123
123
  equal(esbuild_cssBundle_text.includes('.font-bold'), false)
124
124
  equal(esbuild_cssBundle_text.includes('.text-red'), false)
125
- equal(esbuild_cssBundle_text.includes('.font-light'), false)
125
+ equal(esbuild_cssBundle_text.includes('.xyznonexistent'), false)
126
126
  } finally {
127
- await rebuildjs__ready__wait()
127
+ await rebuildjs__ready__wait(30_000)
128
128
  server__build_context?.dispose?.()
129
129
  browser__build_context?.dispose?.()
130
130
  }
@@ -137,15 +137,11 @@ test('rebuild_tailwind_plugin_|tailwindcss_config', async ()=>{
137
137
  let server__build_context:BuildContext|undefined = undefined
138
138
  let browser__build_context:BuildContext|undefined = undefined
139
139
  try {
140
- const rebuild_tailwind_plugin = rebuild_tailwind_plugin_({
141
- tailwindcss_config: {
142
- content: []
143
- }
144
- })
140
+ const rebuild_tailwind_plugin = rebuild_tailwind_plugin_()
145
141
  equal(rebuildjs__ready__add__ready$__a1_(app_ctx), [rebuildjs_tailwind__ready$_])
146
142
  server__build_context = await rebuildjs_server__build({ plugins: [rebuild_tailwind_plugin] })
147
143
  browser__build_context = await rebuildjs_browser__build({ plugins: [rebuild_tailwind_plugin] })
148
- await rebuildjs__ready__wait()
144
+ await rebuildjs__ready__wait(30_000)
149
145
  const server__metafile = server__metafile_(app_ctx)!
150
146
  const server__output__relative_path =
151
147
  Object.keys(server__metafile.outputs)
@@ -179,16 +175,16 @@ test('rebuild_tailwind_plugin_|tailwindcss_config', async ()=>{
179
175
  equal(cssBundle_text.includes('.text-green-500'), true)
180
176
  equal(cssBundle_text.includes('.font-bold'), true)
181
177
  equal(cssBundle_text.includes('.text-red'), false)
182
- equal(cssBundle_text.includes('.font-light'), false)
178
+ equal(cssBundle_text.includes('.xyznonexistent'), false)
183
179
  equal(esbuild_cssBundle_text.includes('@tailwind base;'), true)
184
180
  equal(esbuild_cssBundle_text.includes('@tailwind components;'), true)
185
181
  equal(esbuild_cssBundle_text.includes('@tailwind utilities;'), true)
186
182
  equal(esbuild_cssBundle_text.includes('.text-green-500'), false)
187
183
  equal(esbuild_cssBundle_text.includes('.font-bold'), false)
188
184
  equal(esbuild_cssBundle_text.includes('.text-red'), false)
189
- equal(esbuild_cssBundle_text.includes('.font-light'), false)
185
+ equal(esbuild_cssBundle_text.includes('.xyznonexistent'), false)
190
186
  } finally {
191
- await rebuildjs__ready__wait()
187
+ await rebuildjs__ready__wait(30_000)
192
188
  server__build_context?.dispose?.()
193
189
  browser__build_context?.dispose?.()
194
190
  }