@tailwindcss/cli 4.0.0-alpha.18 → 4.0.0-alpha.19

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 (2) hide show
  1. package/dist/index.mjs +7 -7
  2. package/package.json +8 -7
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- var I=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,i)=>(typeof require<"u"?require:e)[i]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});import it from"mri";function P(t,e=process.argv.slice(2)){let i=it(e),n={_:i._};for(let[o,{type:r,alias:s,default:f=r==="boolean"?!1:null}]of Object.entries(t)){if(n[o]=f,s){let l=s.slice(1);i[l]!==void 0&&(n[o]=L(i[l],r))}{let l=o.slice(2);i[l]!==void 0&&(n[o]=L(i[l],r))}}return n}function L(t,e){switch(e){case"string":return v(t);case"boolean":return k(t);case"number":return O(t);case"boolean | string":return k(t)??v(t);case"number | string":return O(t)??v(t);case"boolean | number":return k(t)??O(t);case"boolean | number | string":return k(t)??O(t)??v(t);default:throw new Error(`Unhandled type: ${e}`)}}function k(t){if(t===!0||t===!1)return t;if(t==="true")return!0;if(t==="false")return!1}function O(t){if(typeof t=="number")return t;{let e=Number(t);if(!Number.isNaN(e))return e}}function v(t){return`${t}`}import pt from"@parcel/watcher";import{IO as ut,Parsing as at,scanDir as G,scanFiles as ft}from"@tailwindcss/oxide";import{Features as J,transform as ct}from"lightningcss";import{existsSync as dt}from"node:fs";import Y from"node:fs/promises";import x from"node:path";import mt from"postcss";import gt from"postcss-import";import*as X from"tailwindcss";import ot from"node:fs";import M from"node:path";import{stripVTControlCharacters as st}from"node:util";import d from"picocolors";import{createRequire as rt}from"node:module";var T=rt(import.meta.url).resolve;function W(t){let e=typeof t=="number"?BigInt(t):t;return e<1000n?`${e}ns`:(e/=1000n,e<1000n?`${e}\xB5s`:(e/=1000n,e<1000n?`${e}ms`:(e/=1000n,e<60n?`${e}s`:(e/=60n,e<60n?`${e}m`:(e/=60n,e<24n?`${e}h`:(e/=24n,`${e}d`))))))}var F={indent:2};function C(){let{version:t}=JSON.parse(ot.readFileSync(T("tailwindcss/package.json"),"utf-8"));return`${d.italic(d.bold(d.blue("\u2248")))} tailwindcss ${d.blue(`v${t}`)}`}function N(t){return`${d.dim(d.blue("`"))}${d.blue(t)}${d.dim(d.blue("`"))}`}function U(t,e=process.cwd(),{preferAbsoluteIfShorter:i=!0}={}){let n=M.relative(e,t);return n.startsWith("..")||(n=`.${M.sep}${n}`),i&&n.length>t.length?t:n}function j(t,e){let i=t.split(" "),n=[],o="",r=0;for(let s of i){let f=st(s).length;r+f+1>e&&(n.push(o),o="",r=0),o+=(r?" ":"")+s,r+=f+(r?1:0)}return r&&n.push(o),n}function D(t){let e=W(t);return t<=50*1e6?d.green(e):t<=300*1e6?d.blue(e):t<=1e3*1e6?d.yellow(e):d.red(e)}function S(t,e=0){return`${" ".repeat(e+F.indent)}${t}`}function h(t=""){process.stderr.write(`${t}
3
- `)}function u(t=""){process.stdout.write(`${t}
4
- `)}import q from"node:fs/promises";import lt from"node:path";function V(){return new Promise((t,e)=>{let i="";process.stdin.on("data",n=>{i+=n}),process.stdin.on("end",()=>t(i)),process.stdin.on("error",n=>e(n))})}async function E(t,e){try{if(await q.readFile(t,"utf8")===e)return}catch{}await q.mkdir(lt.dirname(t),{recursive:!0}),await q.writeFile(t,e,"utf8")}var H=String.raw;function _(){return{"--input":{type:"string",description:"Input file",alias:"-i"},"--output":{type:"string",description:"Output file",alias:"-o"},"--watch":{type:"boolean | string",description:"Watch for changes and rebuild as needed",alias:"-w"},"--minify":{type:"boolean",description:"Optimize and minify the output",alias:"-m"},"--optimize":{type:"boolean",description:"Optimize the output without minifying"},"--cwd":{type:"string",description:"The current working directory",default:"."}}}async function Z(t){let e=x.resolve(t["--cwd"]);t["--output"]&&(t["--output"]=x.resolve(e,t["--output"])),t["--input"]&&t["--input"]!=="-"&&(t["--input"]=x.resolve(e,t["--input"]),dt(t["--input"])||(h(C()),h(),h(`Specified input file ${N(U(t["--input"]))} does not exist.`),process.exit(1)));let i=process.hrtime.bigint(),{candidates:n}=G({base:e}),[o,r]=await Q(t["--input"]?t["--input"]==="-"?await V():await Y.readFile(t["--input"],"utf-8"):H`
5
- @import '${T("tailwindcss/index.css")}';
6
- `,t["--input"]??e),s={css:"",optimizedCss:""};async function f(g,p){let m=g;if(p["--minify"]||p["--optimize"])if(g!==s.css){let $=ht(g,{file:p["--input"]??"input.css",minify:p["--minify"]??!1});s.css=g,s.optimizedCss=$,m=$}else m=s.optimizedCss;p["--output"]?await E(p["--output"],m):u(m)}let l=t["--input"]&&t["--input"]!=="-"?t["--input"]:process.cwd(),c=x.dirname(x.resolve(l));function a(g){return X.compile(g,{loadPlugin:p=>p[0]==="."?I(x.resolve(c,p)):I(p)})}let{build:b}=a(o);await f(b(n),t);let A=process.hrtime.bigint();h(C()),h(),h(`Done in ${D(A-i)}`),t["--watch"]&&(await pt.subscribe(e,async(g,p)=>{if(g){console.error(g);return}try{if(p.length===1&&p[0].path===t["--output"])return;let m=[],$="incremental";for(let w of p)if((w.type==="create"||w.type==="update")&&m.push({file:w.path,extension:x.extname(w.path).slice(1)}),r.includes(w.path)){$="full";break}let et=process.hrtime.bigint(),z="";if($==="full")n=G({base:e}).candidates,[o,r]=await Q(t["--input"]?await Y.readFile(t["--input"],"utf-8"):H`
7
- @import '${T("tailwindcss/index.css")}';
8
- `,t["--input"]??e),b=a(o).build,z=b(n);else if($==="incremental"){let w=ft(m,ut.Sequential|at.Sequential);z=b(w)}await f(z,t);let nt=process.hrtime.bigint();h(`Done in ${D(nt-et)}`)}catch(m){m instanceof Error&&h(m.toString())}}),t["--watch"]!=="always"&&process.stdin.on("end",()=>{process.exit(0)}),process.stdin.resume())}function Q(t,e){return t.includes("@import")?mt().use(gt()).process(t,{from:e}).then(i=>[i.css,[e].concat(i.messages.filter(n=>n.type==="dependency").map(n=>n.file))]):[t,[e]]}function ht(t,{file:e="input.css",minify:i=!1}={}){return ct({filename:e,code:Buffer.from(t),minify:i,sourceMap:!1,drafts:{customMedia:!0},nonStandard:{deepSelectorCombinator:!0},include:J.Nesting,exclude:J.LogicalProperties,targets:{safari:16<<16|1024},errorRecovery:!0}).code.toString()}import y from"picocolors";function B({invalid:t,usage:e,options:i}){let n=process.stdout.columns;if(u(C()),t&&(u(),u(`${y.dim("Invalid command:")} ${t}`)),e&&e.length>0){u(),u(y.dim("Usage:"));for(let[o,r]of e.entries()){let s=r.slice(0,r.indexOf("[")),f=r.slice(r.indexOf("["));f=f.replace(/\[.*?\]/g,a=>y.dim(a));let c=j(f,n-F.indent-s.length-1);c.length>1&&o!==0&&u(),u(S(`${s}${c.shift()}`));for(let a of c)u(S(a,s.length))}}if(i){let o=0;for(let{alias:l}of Object.values(i))l&&(o=Math.max(o,l.length));let r=[],s=0;for(let[l,{alias:c}]of Object.entries(i)){let a=[c&&`${c.padStart(o)}`,c?l:" ".repeat(o+2)+l].filter(Boolean).join(", ");r.push(a),s=Math.max(s,a.length)}u(),u(y.dim("Options:"));let f=8;for(let{description:l,default:c=null}of Object.values(i)){let a=r.shift(),b=f+(s-a.length),A=2,g=n-a.length-b-A-F.indent,p=j(c!==null?`${l} ${y.dim(`[default:\u202F${N(`${c}`)}]`)}`:l,g);u(S(`${y.blue(a)} ${y.dim(y.gray("\xB7")).repeat(b)} ${p.shift()}`));for(let m of p)u(S(`${" ".repeat(a.length+b+A)}${m}`))}}}var K={"--help":{type:"boolean",description:"Display usage information",alias:"-h"}},R=P({..._(),...K}),tt=R._[0];tt&&(B({invalid:tt,usage:["tailwindcss [options]"],options:{..._(),...K}}),process.exit(1));(process.stdout.isTTY&&!R["--output"]||R["--help"])&&(B({usage:["tailwindcss [--input input.css] [--output output.css] [--watch] [options\u2026]"],options:{..._(),...K}}),process.exit(0));Z(R);
2
+ import ft from"mri";function E(t,e=process.argv.slice(2)){let i=ft(e),n={_:i._};for(let[s,{type:r,alias:a,default:u=r==="boolean"?!1:null}]of Object.entries(t)){if(n[s]=u,a){let o=a.slice(1);i[o]!==void 0&&(n[s]=V(i[o],r))}{let o=s.slice(2);i[o]!==void 0&&(n[s]=V(i[o],r))}}return n}function V(t,e){switch(e){case"string":return R(t);case"boolean":return A(t);case"number":return W(t);case"boolean | string":return A(t)??R(t);case"number | string":return W(t)??R(t);case"boolean | number":return A(t)??W(t);case"boolean | number | string":return A(t)??W(t)??R(t);default:throw new Error(`Unhandled type: ${e}`)}}function A(t){if(t===!0||t===!1)return t;if(t==="true")return!0;if(t==="false")return!1}function W(t){if(typeof t=="number")return t;{let e=Number(t);if(!Number.isNaN(e))return e}}function R(t){return`${t}`}import bt from"@parcel/watcher";import{clearCache as yt,scanDir as tt}from"@tailwindcss/oxide";import F from"node:path";function ct(t,e){if(typeof t!="string")throw new TypeError("expected path to be a string");if(t==="\\"||t==="/")return"/";var i=t.length;if(i<=1)return t;var n="";if(i>4&&t[3]==="\\"){var s=t[2];(s==="?"||s===".")&&t.slice(0,2)==="\\\\"&&(t=t.slice(2),n="//")}var r=t.split(/[/\\]+/);return e!==!1&&r[r.length-1]===""&&r.pop(),n+r.join("/")}function G(t){let e=ct(t);return t.startsWith("\\\\")&&e.startsWith("/")&&!e.startsWith("//")?`/${e}`:e}var j="'",I='"';function J(){let t=new WeakSet;function e(i){let n=i.root().source?.input.file;if(!n)return;let s=i.source?.input.file;if(!s||t.has(i))return;let r=i.params[0],a=r[0]===I&&r[r.length-1]===I?I:r[0]===j&&r[r.length-1]===j?j:null;if(!a)return;let u=i.params.slice(1,-1),o="";if(u.startsWith("!")&&(u=u.slice(1),o="!"),!u.startsWith("./")&&!u.startsWith("../"))return;let p=F.posix.join(G(F.dirname(s)),u),l=F.posix.dirname(G(n)),f=F.posix.relative(l,p);f.startsWith(".")||(f="./"+f),i.params=a+o+f+a,t.add(i)}return{postcssPlugin:"tailwindcss-postcss-fix-relative-paths",AtRule:{source:e,plugin:e}}}import{Features as et,transform as wt}from"lightningcss";import{existsSync as xt}from"node:fs";import K from"node:fs/promises";import $ from"node:path";import{pathToFileURL as $t}from"node:url";import Tt from"postcss";import vt from"postcss-import";import*as ot from"tailwindcss";var T=class{#t=new Set([]);queueMacrotask(e){let i=setTimeout(e,0);return this.add(()=>{clearTimeout(i)})}add(e){return this.#t.add(e),()=>{this.#t.delete(e),e()}}dispose(){for(let e of this.#t)e();this.#t.clear()}};import mt from"node:fs";import Y from"node:path";import{stripVTControlCharacters as ht}from"node:util";import g from"picocolors";import{createRequire as dt}from"node:module";var v=dt(import.meta.url).resolve;function Q(t){let e=typeof t=="number"?BigInt(t):t;return e<1000n?`${e}ns`:(e/=1000n,e<1000n?`${e}\xB5s`:(e/=1000n,e<1000n?`${e}ms`:(e/=1000n,e<60n?`${e}s`:(e/=60n,e<60n?`${e}m`:(e/=60n,e<24n?`${e}h`:(e/=24n,`${e}d`))))))}var O={indent:2};function C(){let{version:t}=JSON.parse(mt.readFileSync(v("tailwindcss/package.json"),"utf-8"));return`${g.italic(g.bold(g.blue("\u2248")))} tailwindcss ${g.blue(`v${t}`)}`}function N(t){return`${g.dim(g.blue("`"))}${g.blue(t)}${g.dim(g.blue("`"))}`}function H(t,e=process.cwd(),{preferAbsoluteIfShorter:i=!0}={}){let n=Y.relative(e,t);return n.startsWith("..")||(n=`.${Y.sep}${n}`),i&&n.length>t.length?t:n}function M(t,e){let i=t.split(" "),n=[],s="",r=0;for(let a of i){let u=ht(a).length;r+u+1>e&&(n.push(s),s="",r=0),s+=(r?" ":"")+a,r+=u+(r?1:0)}return r&&n.push(s),n}function B(t){let e=Q(t);return t<=50*1e6?g.green(e):t<=300*1e6?g.blue(e):t<=1e3*1e6?g.yellow(e):g.red(e)}function k(t,e=0){return`${" ".repeat(e+O.indent)}${t}`}function b(t=""){process.stderr.write(`${t}
3
+ `)}function m(t=""){process.stdout.write(`${t}
4
+ `)}import L from"node:fs/promises";import gt from"node:path";function X(){return new Promise((t,e)=>{let i="";process.stdin.on("data",n=>{i+=n}),process.stdin.on("end",()=>t(i)),process.stdin.on("error",n=>e(n))})}async function Z(t,e){try{if(await L.readFile(t,"utf8")===e)return}catch{}await L.mkdir(gt.dirname(t),{recursive:!0}),await L.writeFile(t,e,"utf8")}var it=String.raw;function _(){return{"--input":{type:"string",description:"Input file",alias:"-i"},"--output":{type:"string",description:"Output file",alias:"-o"},"--watch":{type:"boolean | string",description:"Watch for changes and rebuild as needed",alias:"-w"},"--minify":{type:"boolean",description:"Optimize and minify the output",alias:"-m"},"--optimize":{type:"boolean",description:"Optimize the output without minifying"},"--cwd":{type:"string",description:"The current working directory",default:"."}}}async function lt(t){let e=$.resolve(t["--cwd"]);t["--output"]&&(t["--output"]=$.resolve(e,t["--output"])),t["--input"]&&t["--input"]!=="-"&&(t["--input"]=$.resolve(e,t["--input"]),xt(t["--input"])||(b(C()),b(),b(`Specified input file ${N(H(t["--input"]))} does not exist.`),process.exit(1)));let i=process.hrtime.bigint(),[n,s]=await st(t["--input"]?t["--input"]==="-"?await X():await K.readFile(t["--input"],"utf-8"):it`
5
+ @import '${v("tailwindcss/index.css")}';
6
+ `,t["--input"]??e),r={css:"",optimizedCss:""};async function a(h,d){let c=h;if(d["--minify"]||d["--optimize"])if(h!==r.css){let y=Ct(h,{file:d["--input"]??"input.css",minify:d["--minify"]??!1});r.css=h,r.optimizedCss=y,c=y}else c=r.optimizedCss;d["--output"]?await Z(d["--output"],c):m(c)}let u=t["--input"]&&t["--input"]!=="-"?t["--input"]:process.cwd(),o=$.dirname($.resolve(u));function p(h){return ot.compile(h,{loadPlugin:async d=>d[0]==="."?import($t($.resolve(o,d)).href).then(c=>c.default??c):import(d).then(c=>c.default??c)})}let l=await p(n),f=tt({base:e,sources:l.globs.map(h=>({base:o,pattern:h}))});if(t["--watch"]){let h=await rt(nt(e,f),async function d(c){try{if(c.length===1&&c[0]===t["--output"])return;let y=[],D="incremental";for(let w of c){if(s.includes(w)){D="full";break}y.push({file:w,extension:$.extname(w).slice(1)})}let ut=process.hrtime.bigint(),P="";if(D==="full")h(),yt(),[n,s]=await st(t["--input"]?await K.readFile(t["--input"],"utf-8"):it`
7
+ @import '${v("tailwindcss/index.css")}';
8
+ `,t["--input"]??e),l=await p(n),f=tt({base:e,sources:l.globs.map(w=>({base:o,pattern:w}))}),h=await rt(nt(e,f),d),P=l.build(f.candidates);else if(D==="incremental"){let w=f.scanFiles(y);if(w.length===0)return;P=l.build(w)}await a(P,t);let pt=process.hrtime.bigint();b(`Done in ${B(pt-ut)}`)}catch(y){y instanceof Error&&b(y.toString())}});t["--watch"]!=="always"&&process.stdin.on("end",()=>{h(),process.exit(0)}),process.stdin.resume()}await a(l.build(f.candidates),t);let S=process.hrtime.bigint();b(C()),b(),b(`Done in ${B(S-i)}`)}function nt(t,e){return[t].concat(e.globs.flatMap(i=>i.pattern[0]==="!"?[]:i.base.startsWith(t)?[]:i.base))}async function rt(t,e){let i=new T,n=new Set,s=new T;function r(){s.dispose(),s.queueMacrotask(()=>{e(Array.from(n)),n.clear()})}for(let a of t){let{unsubscribe:u}=await bt.subscribe(a,async(o,p)=>{if(o){console.error(o);return}await Promise.all(p.map(async l=>{l.type==="delete"||(await K.lstat(l.path)).isDirectory()||n.add(l.path)})),r()});i.add(u)}return()=>{i.dispose(),s.dispose()}}function st(t,e){return t.includes("@import")?Tt().use(vt()).use(J()).process(t,{from:e}).then(i=>[i.css,[e].concat(i.messages.filter(n=>n.type==="dependency").map(n=>n.file))]):[t,[e]]}function Ct(t,{file:e="input.css",minify:i=!1}={}){return wt({filename:e,code:Buffer.from(t),minify:i,sourceMap:!1,drafts:{customMedia:!0},nonStandard:{deepSelectorCombinator:!0},include:et.Nesting,exclude:et.LogicalProperties,targets:{safari:16<<16|1024},errorRecovery:!0}).code.toString()}import x from"picocolors";function U({invalid:t,usage:e,options:i}){let n=process.stdout.columns;if(m(C()),t&&(m(),m(`${x.dim("Invalid command:")} ${t}`)),e&&e.length>0){m(),m(x.dim("Usage:"));for(let[s,r]of e.entries()){let a=r.slice(0,r.indexOf("[")),u=r.slice(r.indexOf("["));u=u.replace(/\[.*?\]/g,l=>x.dim(l));let p=M(u,n-O.indent-a.length-1);p.length>1&&s!==0&&m(),m(k(`${a}${p.shift()}`));for(let l of p)m(k(l,a.length))}}if(i){let s=0;for(let{alias:o}of Object.values(i))o&&(s=Math.max(s,o.length));let r=[],a=0;for(let[o,{alias:p}]of Object.entries(i)){let l=[p&&`${p.padStart(s)}`,p?o:" ".repeat(s+2)+o].filter(Boolean).join(", ");r.push(l),a=Math.max(a,l.length)}m(),m(x.dim("Options:"));let u=8;for(let{description:o,default:p=null}of Object.values(i)){let l=r.shift(),f=u+(a-l.length),S=2,h=n-l.length-f-S-O.indent,d=M(p!==null?`${o} ${x.dim(`[default:\u202F${N(`${p}`)}]`)}`:o,h);m(k(`${x.blue(l)} ${x.dim(x.gray("\xB7")).repeat(f)} ${d.shift()}`));for(let c of d)m(k(`${" ".repeat(l.length+f+S)}${c}`))}}}var q={"--help":{type:"boolean",description:"Display usage information",alias:"-h"}},z=E({..._(),...q}),at=z._[0];at&&(U({invalid:at,usage:["tailwindcss [options]"],options:{..._(),...q}}),process.exit(1));(process.stdout.isTTY&&!z["--output"]||z["--help"])&&(U({usage:["tailwindcss [--input input.css] [--output output.css] [--watch] [options\u2026]"],options:{..._(),...q}}),process.exit(0));lt(z);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailwindcss/cli",
3
- "version": "4.0.0-alpha.18",
3
+ "version": "4.0.0-alpha.19",
4
4
  "description": "A utility-first CSS framework for rapidly building custom user interfaces.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -25,20 +25,21 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@parcel/watcher": "^2.4.1",
28
- "lightningcss": "^1.25.1",
28
+ "lightningcss": "^1.26.0",
29
29
  "mri": "^1.2.0",
30
30
  "picocolors": "^1.0.1",
31
- "postcss": "8.4.24",
31
+ "postcss": "^8.4.41",
32
32
  "postcss-import": "^16.1.0",
33
- "@tailwindcss/oxide": "4.0.0-alpha.18",
34
- "tailwindcss": "4.0.0-alpha.18"
33
+ "tailwindcss": "4.0.0-alpha.19",
34
+ "@tailwindcss/oxide": "4.0.0-alpha.19"
35
35
  },
36
36
  "devDependencies": {
37
- "@types/postcss-import": "^14.0.3"
37
+ "@types/postcss-import": "^14.0.3",
38
+ "internal-postcss-fix-relative-paths": "0.0.0"
38
39
  },
39
40
  "scripts": {
40
41
  "lint": "tsc --noEmit",
41
- "build": "tsup-node ./src/index.ts --format esm --minify --clean",
42
+ "build": "tsup-node",
42
43
  "dev": "pnpm run build -- --watch"
43
44
  }
44
45
  }