@master/create-css 2.0.0-rc.15 → 2.0.0-rc.16
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/dist/bin/index.mjs +232 -0
- package/package.json +1 -1
- package/dist/bin/index.bundle.js +0 -33
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { readJSONFileSync } from '@techor/fs';
|
|
5
|
+
import log from '@techor/log';
|
|
6
|
+
import { detect } from 'detect-package-manager';
|
|
7
|
+
import { existsSync } from 'fs';
|
|
8
|
+
import { downloadTemplate } from 'giget';
|
|
9
|
+
import { execSync } from 'node:child_process';
|
|
10
|
+
import { writeFileSync, existsSync as existsSync$1 } from 'node:fs';
|
|
11
|
+
import ora from 'ora';
|
|
12
|
+
import { dirname } from 'path';
|
|
13
|
+
import { fileURLToPath } from 'url';
|
|
14
|
+
|
|
15
|
+
var detectAppExt = (()=>{
|
|
16
|
+
// automatically detect the format
|
|
17
|
+
if (existsSync('tsconfig.json')) {
|
|
18
|
+
log.i`Detected **tsconfig.json**`;
|
|
19
|
+
return 'ts';
|
|
20
|
+
} else {
|
|
21
|
+
const { type } = readJSONFileSync('./package.json') || {};
|
|
22
|
+
if (type === 'module') {
|
|
23
|
+
log.i`package.json has **type="module"** set`;
|
|
24
|
+
return 'mjs';
|
|
25
|
+
} else {
|
|
26
|
+
return 'js';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
var detectAppTech = (()=>{
|
|
32
|
+
if (existsSync('next.config.js') || existsSync('next.config.cjs') || existsSync('next.config.mjs') || existsSync('next.config.ts')) {
|
|
33
|
+
return 'nextjs';
|
|
34
|
+
}
|
|
35
|
+
if (existsSync('nuxt.config.js') || existsSync('nuxt.config.cjs') || existsSync('nuxt.config.mjs') || existsSync('nuxt.config.ts')) {
|
|
36
|
+
return 'nuxtjs';
|
|
37
|
+
}
|
|
38
|
+
if (existsSync('remix.config.js') || existsSync('remix.config.cjs') || existsSync('remix.config.mjs') || existsSync('remix.config.ts')) {
|
|
39
|
+
return 'remix';
|
|
40
|
+
}
|
|
41
|
+
if (existsSync('svelte.config.js') || existsSync('svelte.config.cjs') || existsSync('svelte.config.mjs') || existsSync('svelte.config.ts')) {
|
|
42
|
+
return 'svelte';
|
|
43
|
+
}
|
|
44
|
+
if (existsSync('astro.config.js') || existsSync('astro.config.cjs') || existsSync('astro.config.mjs') || existsSync('astro.config.ts')) {
|
|
45
|
+
return 'astro';
|
|
46
|
+
}
|
|
47
|
+
if (existsSync('composer.json')) {
|
|
48
|
+
return 'laravel';
|
|
49
|
+
}
|
|
50
|
+
if (existsSync('angular.json')) {
|
|
51
|
+
return 'angular';
|
|
52
|
+
}
|
|
53
|
+
const pkg = readJSONFileSync('package.json');
|
|
54
|
+
if (pkg?.dependencies?.['@remix-run/react'] || pkg?.devDependencies?.['@remix-run/react']) {
|
|
55
|
+
return 'remix';
|
|
56
|
+
}
|
|
57
|
+
if (pkg?.dependencies?.['@sveltejs/kit'] || pkg?.devDependencies?.['@sveltejs/kit']) {
|
|
58
|
+
return 'svelte';
|
|
59
|
+
}
|
|
60
|
+
if (pkg?.dependencies?.['astro'] || pkg?.devDependencies?.['astro']) {
|
|
61
|
+
return 'astro';
|
|
62
|
+
}
|
|
63
|
+
if (pkg?.dependencies?.['next'] || pkg?.devDependencies?.['next']) {
|
|
64
|
+
return 'nextjs';
|
|
65
|
+
}
|
|
66
|
+
if (pkg?.dependencies?.['nuxt'] || pkg?.devDependencies?.['nuxt']) {
|
|
67
|
+
return 'nuxtjs';
|
|
68
|
+
}
|
|
69
|
+
if (pkg?.dependencies?.['@angular/core'] || pkg?.devDependencies?.['@angular/core']) {
|
|
70
|
+
return 'angular';
|
|
71
|
+
}
|
|
72
|
+
if (pkg?.dependencies?.['react'] || pkg?.devDependencies?.['react']) {
|
|
73
|
+
return 'react';
|
|
74
|
+
}
|
|
75
|
+
if (pkg?.dependencies?.['vue'] || pkg?.devDependencies?.['vue']) {
|
|
76
|
+
return 'vuejs';
|
|
77
|
+
}
|
|
78
|
+
if (existsSync('vite.config.js') || existsSync('vite.config.cjs') || existsSync('vite.config.mjs') || existsSync('vite.config.ts')) {
|
|
79
|
+
return 'vite';
|
|
80
|
+
}
|
|
81
|
+
if (existsSync('webpack.config.js') || existsSync('webpack.config.cjs') || existsSync('webpack.config.mjs') || existsSync('webpack.config.ts')) {
|
|
82
|
+
return 'webpack';
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
var CONFIG_ESM_TEXT = `/** @type {import('@master/css').Config} */
|
|
87
|
+
export default {
|
|
88
|
+
styles: {},
|
|
89
|
+
rules: {},
|
|
90
|
+
variables: {},
|
|
91
|
+
semantics: {},
|
|
92
|
+
mediaQueries: {},
|
|
93
|
+
animations: {},
|
|
94
|
+
selectors: {},
|
|
95
|
+
functions: {}
|
|
96
|
+
}`;
|
|
97
|
+
|
|
98
|
+
var CONFIG_TS_TEXT = `import type { Config } from '@master/css'
|
|
99
|
+
|
|
100
|
+
export default {
|
|
101
|
+
styles: {},
|
|
102
|
+
rules: {},
|
|
103
|
+
variables: {},
|
|
104
|
+
semantics: {},
|
|
105
|
+
mediaQueries: {},
|
|
106
|
+
animations: {},
|
|
107
|
+
selectors: {},
|
|
108
|
+
functions: {}
|
|
109
|
+
} as Config`;
|
|
110
|
+
|
|
111
|
+
var CONFIG_TEXT = `/** @type {import('@master/css').Config} */
|
|
112
|
+
module.exports = {
|
|
113
|
+
styles: {},
|
|
114
|
+
rules: {},
|
|
115
|
+
variables: {},
|
|
116
|
+
semantics: {},
|
|
117
|
+
mediaQueries: {},
|
|
118
|
+
animations: {},
|
|
119
|
+
selectors: {},
|
|
120
|
+
functions: {}
|
|
121
|
+
}`;
|
|
122
|
+
|
|
123
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
124
|
+
const __dirname = dirname(__filename);
|
|
125
|
+
const pkg = readJSONFileSync(resolve(__dirname, '../../package.json'));
|
|
126
|
+
const program = new Command();
|
|
127
|
+
program.name(pkg.name).description(pkg.description).version(pkg.version || 'workspace:^').argument('[project name]', 'The project name is used to create the folder').option('-o, --override', 'Override existing definition file').option('--ext <ext>', 'Specify the extension mjs, ts, js').option('--pm <package manager>', 'Specify the package manager npm, yarn, pnpm, bun').option('--example <folder name>', 'Specify the example folder name', 'blank').action(async function(appName, options) {
|
|
128
|
+
if (!options.pm) {
|
|
129
|
+
// Detect the package manager
|
|
130
|
+
options.pm = await detect({
|
|
131
|
+
cwd: process.cwd()
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
const appPkg = readJSONFileSync('package.json');
|
|
135
|
+
// Create a new app with the example
|
|
136
|
+
if (appName) {
|
|
137
|
+
log.i(`Detected **${options.pm}**`);
|
|
138
|
+
const spinner = ora(`Initializing Master CSS`).start();
|
|
139
|
+
const examplePath = `github:master-co/css/examples/${options.example}#rc`;
|
|
140
|
+
spinner.start(`Cloning example from "${examplePath}"`);
|
|
141
|
+
try {
|
|
142
|
+
await downloadTemplate(examplePath, {
|
|
143
|
+
dir: appName
|
|
144
|
+
});
|
|
145
|
+
} catch (error) {
|
|
146
|
+
spinner.fail(error.message);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
process.chdir(appName);
|
|
150
|
+
if (!appPkg) {
|
|
151
|
+
spinner.fail(`Cannot found "${examplePath}"`);
|
|
152
|
+
log.i`View all available examples at **https://github.com/master-co/css/tree/rc/examples**`;
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
appPkg.name = appName;
|
|
156
|
+
const targetPackages = [];
|
|
157
|
+
for(const key in appPkg.dependencies){
|
|
158
|
+
if (pkg.version && appPkg.dependencies[key] === 'workspace:^') {
|
|
159
|
+
appPkg.dependencies[key] = `^${pkg.version}`;
|
|
160
|
+
}
|
|
161
|
+
targetPackages.push(key);
|
|
162
|
+
}
|
|
163
|
+
for(const key in appPkg.devDependencies){
|
|
164
|
+
if (pkg.version && appPkg.devDependencies[key] === 'workspace:^') {
|
|
165
|
+
appPkg.devDependencies[key] = `^${pkg.version}`;
|
|
166
|
+
}
|
|
167
|
+
targetPackages.push(key);
|
|
168
|
+
}
|
|
169
|
+
writeFileSync('package.json', JSON.stringify(appPkg, null, 4), {
|
|
170
|
+
flag: 'w'
|
|
171
|
+
});
|
|
172
|
+
spinner.stop();
|
|
173
|
+
log.ok`Cloned example from "${examplePath}"`;
|
|
174
|
+
log.i`Start "${options.pm} install" for dependencies: ${targetPackages}`;
|
|
175
|
+
log``;
|
|
176
|
+
try {
|
|
177
|
+
execSync(`${options.pm} install`, {
|
|
178
|
+
stdio: 'inherit'
|
|
179
|
+
});
|
|
180
|
+
log``;
|
|
181
|
+
log.ok`Created **${appName}**`;
|
|
182
|
+
log.i`Commands in this app:`;
|
|
183
|
+
console.table(appPkg.scripts);
|
|
184
|
+
log.i`Start by running "cd ${appName} && ${options.pm} run ${appPkg.scripts?.dev ? 'dev' : 'start'}"`;
|
|
185
|
+
} catch (error) {
|
|
186
|
+
spinner.fail();
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
options.ext = options.ext || detectAppExt();
|
|
191
|
+
const create = (fileName, text)=>{
|
|
192
|
+
const configExists = existsSync$1(fileName);
|
|
193
|
+
if (!configExists) {
|
|
194
|
+
writeFileSync(fileName, text);
|
|
195
|
+
log.ok`Created **${fileName}**`;
|
|
196
|
+
} else if (configExists && options.override) {
|
|
197
|
+
writeFileSync(fileName, text);
|
|
198
|
+
log.ok`**${fileName}** is overridden`;
|
|
199
|
+
} else {
|
|
200
|
+
log.x`**${fileName}** already exists`;
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
// create master.css.* file
|
|
204
|
+
switch(options.ext){
|
|
205
|
+
case 'js':
|
|
206
|
+
create('master.css.js', CONFIG_TEXT);
|
|
207
|
+
break;
|
|
208
|
+
case 'mjs':
|
|
209
|
+
create('master.css.mjs', CONFIG_ESM_TEXT);
|
|
210
|
+
break;
|
|
211
|
+
case 'ts':
|
|
212
|
+
create('master.css.ts', CONFIG_TS_TEXT);
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
if (!appPkg?.dependencies?.['@master/css']) {
|
|
216
|
+
log.i(`Detected **${options.pm}**`);
|
|
217
|
+
log.i`Start "${options.pm} add @master/css@rc"`;
|
|
218
|
+
log``;
|
|
219
|
+
execSync(`${options.pm} add @master/css@rc`, {
|
|
220
|
+
stdio: 'inherit'
|
|
221
|
+
});
|
|
222
|
+
log``;
|
|
223
|
+
}
|
|
224
|
+
const tech = detectAppTech();
|
|
225
|
+
if (tech) {
|
|
226
|
+
log.i(`Detected **${tech}** (https://rc.css.master.co/docs/installation/${tech})`);
|
|
227
|
+
} else {
|
|
228
|
+
log.i(`To integrate with your framework, check out the guides at **https://rc.css.master.co/docs/installation**`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
program.parse(process.argv);
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@master/create-css","scripts":{"build":"techor
|
|
1
|
+
{"name":"@master/create-css","type":"module","scripts":{"build":"techor build","dev":"pnpm build --watch","lint":"eslint ./src","type-check":"tsc --noEmit","test":"jest"},"license":"MIT","description":"Initialize a new Master CSS project","author":"Aoyue Design LLC.","funding":"https://css.master.co/docs/donate","homepage":"https://css.master.co","bugs":{"url":"https://github.com/master-co/css/issues"},"repository":{"type":"git","url":"https://github.com/master-co/css.git","directory":"packages/create"},"keywords":["cli","create","init","css","mastercss"],"bin":"./dist/bin/index.mjs","files":["dist"],"publishConfig":{"access":"public"},"dependencies":{"@master/css":"2.0.0-rc.13","@techor/fs":"^3.0.11","@techor/log":"^3.0.11","commander":"^12.0.0","detect-package-manager":"^3.0.1","giget":"^1.2.1","ora":"^8.0.1"},"devDependencies":{"css-shared":"^2.0.0-rc.16"},"version":"2.0.0-rc.16"}
|
package/dist/bin/index.bundle.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";var Q=Object.create;var j=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var f=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var q=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of A(t))!V.call(e,i)&&i!==n&&j(e,i,{get:()=>t[i],enumerable:!(c=X(t,i))||c.enumerable});return e};var p=(e,t,n)=>(n=e!=null?Q(z(e)):{},q(t||!e||!e.__esModule?j(n,"default",{value:e,enumerable:!0}):n,e));var $=f((L,S)=>{"use strict";S.exports=`/** @type {import('@master/css').Config} */
|
|
3
|
-
export default {
|
|
4
|
-
styles: {},
|
|
5
|
-
rules: {},
|
|
6
|
-
variables: {},
|
|
7
|
-
semantics: {},
|
|
8
|
-
mediaQueries: {},
|
|
9
|
-
animations: {},
|
|
10
|
-
selectors: {},
|
|
11
|
-
functions: {}
|
|
12
|
-
}`});var C=f((R,b)=>{"use strict";b.exports=`import type { Config } from '@master/css'
|
|
13
|
-
|
|
14
|
-
export default {
|
|
15
|
-
styles: {},
|
|
16
|
-
rules: {},
|
|
17
|
-
variables: {},
|
|
18
|
-
semantics: {},
|
|
19
|
-
mediaQueries: {},
|
|
20
|
-
animations: {},
|
|
21
|
-
selectors: {},
|
|
22
|
-
functions: {}
|
|
23
|
-
} as Config`});var T=f((U,D)=>{"use strict";D.exports=`/** @type {import('@master/css').Config} */
|
|
24
|
-
module.exports = {
|
|
25
|
-
styles: {},
|
|
26
|
-
rules: {},
|
|
27
|
-
variables: {},
|
|
28
|
-
semantics: {},
|
|
29
|
-
mediaQueries: {},
|
|
30
|
-
animations: {},
|
|
31
|
-
selectors: {},
|
|
32
|
-
functions: {}
|
|
33
|
-
}`});var O=require("node:path"),F=require("commander"),u=require("@techor/fs"),r=p(require("@techor/log")),_=require("detect-package-manager");var v=require("@techor/fs"),k=require("fs"),l=p(require("@techor/log")),y=()=>{if((0,k.existsSync)("tsconfig.json"))return l.default.i`Detected **tsconfig.json**`,"ts";{let{type:e}=(0,v.readJSONFileSync)("./package.json")||{};return e==="module"?(l.default.i`package.json has **type="module"** set`,"mjs"):"js"}};var h=require("@techor/fs"),s=require("fs"),w=()=>{if((0,s.existsSync)("next.config.js")||(0,s.existsSync)("next.config.cjs")||(0,s.existsSync)("next.config.mjs")||(0,s.existsSync)("next.config.ts"))return"nextjs";if((0,s.existsSync)("nuxt.config.js")||(0,s.existsSync)("nuxt.config.cjs")||(0,s.existsSync)("nuxt.config.mjs")||(0,s.existsSync)("nuxt.config.ts"))return"nuxtjs";if((0,s.existsSync)("remix.config.js")||(0,s.existsSync)("remix.config.cjs")||(0,s.existsSync)("remix.config.mjs")||(0,s.existsSync)("remix.config.ts"))return"remix";if((0,s.existsSync)("svelte.config.js")||(0,s.existsSync)("svelte.config.cjs")||(0,s.existsSync)("svelte.config.mjs")||(0,s.existsSync)("svelte.config.ts"))return"svelte";if((0,s.existsSync)("astro.config.js")||(0,s.existsSync)("astro.config.cjs")||(0,s.existsSync)("astro.config.mjs")||(0,s.existsSync)("astro.config.ts"))return"astro";if((0,s.existsSync)("composer.json"))return"laravel";if((0,s.existsSync)("angular.json"))return"angular";let e=(0,h.readJSONFileSync)("package.json");if(e?.dependencies?.["@remix-run/react"]||e?.devDependencies?.["@remix-run/react"])return"remix";if(e?.dependencies?.["@sveltejs/kit"]||e?.devDependencies?.["@sveltejs/kit"])return"svelte";if(e?.dependencies?.astro||e?.devDependencies?.astro)return"astro";if(e?.dependencies?.next||e?.devDependencies?.next)return"nextjs";if(e?.dependencies?.nuxt||e?.devDependencies?.nuxt)return"nuxtjs";if(e?.dependencies?.["@angular/core"]||e?.devDependencies?.["@angular/core"])return"angular";if(e?.dependencies?.react||e?.devDependencies?.react)return"react";if(e?.dependencies?.vue||e?.devDependencies?.vue)return"vuejs";if((0,s.existsSync)("vite.config.js")||(0,s.existsSync)("vite.config.cjs")||(0,s.existsSync)("vite.config.mjs")||(0,s.existsSync)("vite.config.ts"))return"vite";if((0,s.existsSync)("webpack.config.js")||(0,s.existsSync)("webpack.config.cjs")||(0,s.existsSync)("webpack.config.mjs")||(0,s.existsSync)("webpack.config.ts"))return"webpack"};var E=require("giget"),g=require("node:child_process"),d=require("node:fs"),I=p(require("ora")),J=p($()),P=p(C()),G=p(T()),m=(0,u.readJSONFileSync)((0,O.resolve)(__dirname,"../../package.json")),M=new F.Command;M.name(m.name).description(m.description).version(m.version||"workspace:^").argument("[project name]","The project name is used to create the folder").option("-o, --override","Override existing definition file").option("--ext <ext>","Specify the extension mjs, ts, js").option("--pm <package manager>","Specify the package manager npm, yarn, pnpm, bun").option("--example <folder name>","Specify the example folder name","blank").action(async function(e,t){t.pm||(t.pm=await(0,_.detect)({cwd:process.cwd()}));let n=(0,u.readJSONFileSync)("package.json");if(e){r.default.i(`Detected **${t.pm}**`);let c=(0,I.default)("Initializing Master CSS").start(),i=`github:master-co/css/examples/${t.example}#rc`;c.start(`Cloning example from "${i}"`);try{await(0,E.downloadTemplate)(i,{dir:e})}catch(o){c.fail(o.message);return}if(process.chdir(e),!n){c.fail(`Cannot found "${i}"`),r.default.i`View all available examples at **https://github.com/master-co/css/tree/rc/examples**`;return}n.name=e;let a=[];for(let o in n.dependencies)m.version&&n.dependencies[o]==="workspace:^"&&(n.dependencies[o]=`^${m.version}`),a.push(o);for(let o in n.devDependencies)m.version&&n.devDependencies[o]==="workspace:^"&&(n.devDependencies[o]=`^${m.version}`),a.push(o);(0,d.writeFileSync)("package.json",JSON.stringify(n,null,4),{flag:"w"}),c.stop(),r.default.ok`Cloned example from "${i}"`,r.default.i`Start "${t.pm} install" for dependencies: ${a}`,r.default``;try{(0,g.execSync)(`${t.pm} install`,{stdio:"inherit"}),r.default``,r.default.ok`Created **${e}**`,r.default.i`Commands in this app:`,console.table(n.scripts),r.default.i`Start by running "cd ${e} && ${t.pm} run ${n.scripts?.dev?"dev":"start"}"`}catch(o){throw c.fail(),o}}else{t.ext=t.ext||y();let c=(a,o)=>{let x=(0,d.existsSync)(a);x?x&&t.override?((0,d.writeFileSync)(a,o),r.default.ok`**${a}** is overridden`):r.default.x`**${a}** already exists`:((0,d.writeFileSync)(a,o),r.default.ok`Created **${a}**`)};switch(t.ext){case"js":c("master.css.js",G.default);break;case"mjs":c("master.css.mjs",J.default);break;case"ts":c("master.css.ts",P.default);break}n?.dependencies?.["@master/css"]||(r.default.i(`Detected **${t.pm}**`),r.default.i`Start "${t.pm} add @master/css@rc"`,r.default``,(0,g.execSync)(`${t.pm} add @master/css@rc`,{stdio:"inherit"}),r.default``);let i=w();i?r.default.i(`Detected **${i}** (https://rc.css.master.co/docs/installation/${i})`):r.default.i("To integrate with your framework, check out the guides at **https://rc.css.master.co/docs/installation**")}});M.parse(process.argv);
|