@pavlos-samaras/react-cli 1.0.0 → 1.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.
- package/README.md +37 -0
- package/dist/bin/ct.js +15 -5
- package/dist/bin/ct.js.map +1 -1
- package/dist/templates/component.d.ts +1 -1
- package/dist/templates/component.d.ts.map +1 -1
- package/dist/templates/component.js +7 -3
- package/dist/templates/component.js.map +1 -1
- package/dist/templates/hook.d.ts +3 -0
- package/dist/templates/hook.d.ts.map +1 -0
- package/dist/templates/hook.js +5 -0
- package/dist/templates/hook.js.map +1 -0
- package/dist/templates/stylesheet.d.ts +3 -0
- package/dist/templates/stylesheet.d.ts.map +1 -0
- package/dist/templates/stylesheet.js +7 -0
- package/dist/templates/stylesheet.js.map +1 -0
- package/dist/types/component.d.ts +1 -0
- package/dist/types/component.d.ts.map +1 -1
- package/dist/utils/generateComponent.d.ts +16 -2
- package/dist/utils/generateComponent.d.ts.map +1 -1
- package/dist/utils/generateComponent.js +36 -8
- package/dist/utils/generateComponent.js.map +1 -1
- package/package.json +35 -30
package/README.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# React CLI
|
|
2
|
+
|
|
3
|
+
A simple command-line tool for generating React components.
|
|
4
|
+
|
|
5
|
+
## Build and link
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install
|
|
9
|
+
npm run build
|
|
10
|
+
npm link
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
Generate a component in `src/components/<Name>`:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
ct generate component Button
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
You can also use the `g` shorthand, choose a different target directory, or
|
|
22
|
+
create a TypeScript file:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
ct g component Button --dir src/ui --ts
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Without `--ts`, the CLI asks whether to use TypeScript and creates either a
|
|
29
|
+
`.tsx` or `.jsx` file.
|
|
30
|
+
|
|
31
|
+
## Development
|
|
32
|
+
|
|
33
|
+
Run the CLI directly from the TypeScript source:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm run dev -- generate component Button
|
|
37
|
+
```
|
package/dist/bin/ct.js
CHANGED
|
@@ -1,25 +1,35 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import path from "path";
|
|
4
|
+
import { createRequire } from "module";
|
|
4
5
|
import { Command } from "commander";
|
|
5
6
|
import { generateComponent } from "../utils/generateComponent.js";
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
const { version } = require("../../package.json");
|
|
6
9
|
const program = new Command();
|
|
7
10
|
const TYPES = ["component"];
|
|
8
|
-
program.name("ct").description("My React CLI").version(
|
|
11
|
+
program.name("ct").description("My React CLI").version(version);
|
|
9
12
|
program
|
|
10
13
|
.command("generate <type> <name>")
|
|
11
14
|
.alias("g")
|
|
12
15
|
.description("Generate a component, e.g. ct g component Button")
|
|
13
|
-
.option("-d, --dir <div>", "target folder", "
|
|
16
|
+
.option("-d, --dir <div>", "target folder", "components")
|
|
17
|
+
.option("-f, --feature <feature>", "put component under a feature")
|
|
14
18
|
.option("--ts", "create a .tsx file")
|
|
15
19
|
.action(async (type, name, options) => {
|
|
16
20
|
if (!TYPES.includes(type))
|
|
17
21
|
return console.log(`Unknown type: ${type}`);
|
|
18
22
|
if (type === "component") {
|
|
19
|
-
const
|
|
23
|
+
const pathToComponent = options.feature
|
|
24
|
+
? `src/features/${options.feature}/${options.dir}`
|
|
25
|
+
: `src/${options.dir}`;
|
|
26
|
+
const folder = path.join(process.cwd(), pathToComponent, name);
|
|
20
27
|
fs.mkdirSync(folder, { recursive: true });
|
|
21
|
-
const {
|
|
22
|
-
fs.writeFileSync(path.join(folder, file), content);
|
|
28
|
+
const { JSX, stylesheet, hook, test } = await generateComponent(name, options);
|
|
29
|
+
fs.writeFileSync(path.join(folder, JSX.file), JSX.content);
|
|
30
|
+
fs.writeFileSync(path.join(folder, stylesheet.file), stylesheet.content);
|
|
31
|
+
fs.writeFileSync(path.join(folder, hook.file), hook.content);
|
|
32
|
+
fs.writeFileSync(path.join(folder, test.file), test.content);
|
|
23
33
|
}
|
|
24
34
|
});
|
|
25
35
|
program.parse();
|
package/dist/bin/ct.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct.js","sourceRoot":"","sources":["../../src/bin/ct.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;AAE5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhE,OAAO;KACJ,OAAO,CAAC,wBAAwB,CAAC;KACjC,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"ct.js","sourceRoot":"","sources":["../../src/bin/ct.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEzE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;AAE5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhE,OAAO;KACJ,OAAO,CAAC,wBAAwB,CAAC;KACjC,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,eAAe,EAAE,YAAY,CAAC;KACxD,MAAM,CAAC,yBAAyB,EAAE,+BAA+B,CAAC;KAClE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;KACpC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAY,EAAE,OAAyB,EAAE,EAAE;IACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAEvE,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO;YACrC,CAAC,CAAC,gBAAgB,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;YAClD,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAC/D,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1C,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAiB,CAC7D,IAAI,EACJ,OAAO,CACR,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;QACzE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/templates/component.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/templates/component.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,sBAAsB,SACpB,MAAM,iBACG,MAAM,gBACP,MAAM,WASrB,CAAC;eAEa,sBAAsB"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
const buildComponentTemplate = (name) => {
|
|
2
|
-
return `
|
|
3
|
-
|
|
1
|
+
const buildComponentTemplate = (name, stylesheetExt, componentExt) => {
|
|
2
|
+
return `import styles from "./${name}.module.${stylesheetExt}"
|
|
3
|
+
import { use${name} } from "./use${name}.${componentExt}"
|
|
4
|
+
|
|
5
|
+
export const ${name} = () => {
|
|
6
|
+
const hook = use${name}();
|
|
7
|
+
return <div className={styles.${name.toLowerCase()}></div>
|
|
4
8
|
}`;
|
|
5
9
|
};
|
|
6
10
|
export default buildComponentTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/templates/component.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/templates/component.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG,CAC7B,IAAY,EACZ,aAAqB,EACrB,YAAoB,EACpB,EAAE;IACF,OAAO,yBAAyB,IAAI,WAAW,aAAa;cAChD,IAAI,iBAAiB,IAAI,IAAI,YAAY;;eAExC,IAAI;oBACC,IAAI;kCACU,IAAI,CAAC,WAAW,EAAE;EAClD,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/templates/hook.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,iBAAiB,SAAU,MAAM,WAEtC,CAAC;eAEa,iBAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/templates/hook.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;IACzC,OAAO,mBAAmB,IAAI,aAAa,CAAC;AAC9C,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stylesheet.d.ts","sourceRoot":"","sources":["../../src/templates/stylesheet.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,uBAAuB,SAAU,MAAM,WAI5C,CAAC;eAEa,uBAAuB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stylesheet.js","sourceRoot":"","sources":["../../src/templates/stylesheet.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC/C,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;;EAE7B,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/types/component.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,OAAO,CAAC;CACd,CAAA"}
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/types/component.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;CACd,CAAA"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import type { ComponentOptions } from "../types/component.js";
|
|
2
2
|
export declare const generateComponent: (name: string, options: ComponentOptions) => Promise<{
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
JSX: {
|
|
4
|
+
file: string;
|
|
5
|
+
content: string;
|
|
6
|
+
};
|
|
7
|
+
stylesheet: {
|
|
8
|
+
file: string;
|
|
9
|
+
content: string;
|
|
10
|
+
};
|
|
11
|
+
hook: {
|
|
12
|
+
file: string;
|
|
13
|
+
content: string;
|
|
14
|
+
};
|
|
15
|
+
test: {
|
|
16
|
+
file: string;
|
|
17
|
+
content: string;
|
|
18
|
+
};
|
|
5
19
|
}>;
|
|
6
20
|
//# sourceMappingURL=generateComponent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateComponent.d.ts","sourceRoot":"","sources":["../../src/utils/generateComponent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"generateComponent.d.ts","sourceRoot":"","sources":["../../src/utils/generateComponent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D,eAAO,MAAM,iBAAiB,SACtB,MAAM,WACH,gBAAgB;;QAiCrB,IAAI;QACJ,OAAO;;;QAOP,IAAI;QACJ,OAAO;;;QAGP,IAAI;QACJ,OAAO;;;QAGP,IAAI;QACJ,OAAO;;EAGZ,CAAC"}
|
|
@@ -1,22 +1,50 @@
|
|
|
1
1
|
import prompts from "prompts";
|
|
2
2
|
import buildComponentTemplate from "../templates/component.js";
|
|
3
|
+
import buildStylesheetTemplate from "../templates/stylesheet.js";
|
|
4
|
+
import buildHookTemplate from "../templates/hook.js";
|
|
3
5
|
export const generateComponent = async (name, options) => {
|
|
4
|
-
let
|
|
5
|
-
if (
|
|
6
|
+
let componentExt;
|
|
7
|
+
if (options.ts === undefined) {
|
|
6
8
|
const answer = await prompts({
|
|
7
9
|
type: "select",
|
|
8
10
|
name: "ts",
|
|
9
11
|
message: "Use TypeScript?",
|
|
10
12
|
choices: [
|
|
11
|
-
{ title: "Yes", value:
|
|
12
|
-
{ title: "No", value:
|
|
13
|
+
{ title: "Yes", value: "tsx" },
|
|
14
|
+
{ title: "No", value: "jsx" },
|
|
13
15
|
],
|
|
14
16
|
initial: 0,
|
|
15
17
|
});
|
|
16
|
-
|
|
18
|
+
componentExt = answer.ts;
|
|
17
19
|
}
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
const stylesheetExt = await prompts({
|
|
21
|
+
type: "select",
|
|
22
|
+
name: "style",
|
|
23
|
+
message: "What stylesheet to use",
|
|
24
|
+
choices: [
|
|
25
|
+
{ title: "CSS", value: "css" },
|
|
26
|
+
{ title: "SCSS", value: "scss" },
|
|
27
|
+
],
|
|
28
|
+
initial: 1,
|
|
29
|
+
});
|
|
30
|
+
const componentLanguage = componentExt?.replace("x", "");
|
|
31
|
+
return {
|
|
32
|
+
JSX: {
|
|
33
|
+
file: `${name}.${componentExt}`,
|
|
34
|
+
content: buildComponentTemplate(name, stylesheetExt.style, componentLanguage),
|
|
35
|
+
},
|
|
36
|
+
stylesheet: {
|
|
37
|
+
file: `${name}.module.${stylesheetExt.style}`,
|
|
38
|
+
content: buildStylesheetTemplate(name),
|
|
39
|
+
},
|
|
40
|
+
hook: {
|
|
41
|
+
file: `use${name}.${componentLanguage}`,
|
|
42
|
+
content: buildHookTemplate(name),
|
|
43
|
+
},
|
|
44
|
+
test: {
|
|
45
|
+
file: `${name}.test.${componentLanguage}`,
|
|
46
|
+
content: "",
|
|
47
|
+
},
|
|
48
|
+
};
|
|
21
49
|
};
|
|
22
50
|
//# sourceMappingURL=generateComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateComponent.js","sourceRoot":"","sources":["../../src/utils/generateComponent.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,sBAAsB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"generateComponent.js","sourceRoot":"","sources":["../../src/utils/generateComponent.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,sBAAsB,MAAM,2BAA2B,CAAC;AAE/D,OAAO,uBAAuB,MAAM,4BAA4B,CAAC;AACjE,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,IAAY,EACZ,OAAyB,EACzB,EAAE;IACF,IAAI,YAAY,CAAC;IAEjB,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;gBAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;aAC9B;YACD,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QACH,YAAY,GAAG,MAAM,CAAC,EAAY,CAAC;IACrC,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;QAClC,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,wBAAwB;QACjC,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YAC9B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SACjC;QACD,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAE,CAAC;IAE1D,OAAO;QACL,GAAG,EAAE;YACH,IAAI,EAAE,GAAG,IAAI,IAAI,YAAY,EAAE;YAC/B,OAAO,EAAE,sBAAsB,CAC7B,IAAI,EACJ,aAAa,CAAC,KAAK,EACnB,iBAAiB,CAClB;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE,GAAG,IAAI,WAAW,aAAa,CAAC,KAAK,EAAE;YAC7C,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC;SACvC;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,IAAI,IAAI,iBAAiB,EAAE;YACvC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC;SACjC;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,GAAG,IAAI,SAAS,iBAAiB,EAAE;YACzC,OAAO,EAAE,EAAE;SACZ;KACF,CAAC;AACJ,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,30 +1,35 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@pavlos-samaras/react-cli",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"author": "sammern-stack",
|
|
5
|
-
"description": "A CLI to generate React code",
|
|
6
|
-
"keywords": [
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@pavlos-samaras/react-cli",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"author": "sammern-stack",
|
|
5
|
+
"description": "A CLI to generate React code",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"react",
|
|
8
|
+
"cli",
|
|
9
|
+
"generator"
|
|
10
|
+
],
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"bin": {
|
|
14
|
+
"ct": "./dist/bin/ct.js"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"prepublishOnly": "npm run build",
|
|
19
|
+
"dev": "tsx src/bin/ct.ts",
|
|
20
|
+
"build:link": "npm run build && npm link"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"commander": "^15.0.0",
|
|
24
|
+
"prompts": "^2.4.2"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^26.6.6",
|
|
28
|
+
"@types/prompts": "^2.4.9",
|
|
29
|
+
"tsx": "^4.23.15",
|
|
30
|
+
"typescript": "^7.0.2"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
]
|
|
35
|
+
}
|