generate-react-cli 7.4.0 → 8.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.
@@ -1,16 +1,17 @@
1
1
  #!/usr/bin/env node
2
+ import cli from '../src/cli.js';
2
3
 
3
4
  const isNotValidNodeVersion = () => {
4
5
  const currentNodeVersion = process.versions.node;
5
6
  const semver = currentNodeVersion.split('.');
6
7
  const major = semver[0];
7
8
 
8
- if (major < 12) {
9
+ if (major < 16) {
9
10
  console.error(
10
11
  // eslint-disable-next-line
11
12
  'You are running Node ' +
12
13
  currentNodeVersion +
13
- ' Generate React CLI requires Node 12 or higher. Please update your version of Node.'
14
+ ' Generate React CLI requires Node 16 or higher. Please update your version of Node.'
14
15
  );
15
16
 
16
17
  return true;
@@ -25,4 +26,4 @@ if (isNotValidNodeVersion()) {
25
26
  process.exit(1);
26
27
  }
27
28
 
28
- require('../src/cli')(process.argv);
29
+ cli(process.argv);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "generate-react-cli",
3
- "version": "7.4.0",
3
+ "version": "8.0.1",
4
4
  "description": "A simple React CLI to generate components instantly and more.",
5
5
  "repository": "https://github.com/arminbro/generate-react-cli",
6
6
  "bugs": "https://github.com/arminbro/generate-react-cli/issues",
@@ -8,8 +8,9 @@
8
8
  "license": "MIT",
9
9
  "main": "bin/generate-react",
10
10
  "bin": {
11
- "generate-react": "bin/generate-react"
11
+ "generate-react": "bin/generate-react.js"
12
12
  },
13
+ "type": "module",
13
14
  "files": [
14
15
  "bin/",
15
16
  "src/",
@@ -37,30 +38,30 @@
37
38
  "prepare": "husky install"
38
39
  },
39
40
  "dependencies": {
40
- "chalk": "^4.1.2",
41
- "commander": "^9.0.0",
42
- "deep-keys": "^0.5.0",
43
- "fs-extra": "^10.0.0",
44
- "inquirer": "^8.1.2",
45
- "lodash": "^4.17.20",
46
- "replace": "^1.2.0"
41
+ "chalk": "5.1.2",
42
+ "commander": "9.4.1",
43
+ "deep-keys": "0.5.0",
44
+ "fs-extra": "10.1.0",
45
+ "inquirer": "9.1.4",
46
+ "lodash": "4.17.21",
47
+ "replace": "1.2.2"
47
48
  },
48
49
  "devDependencies": {
49
- "@commitlint/cli": "^13.2.1",
50
- "@commitlint/config-conventional": "^13.2.0",
51
- "@semantic-release/commit-analyzer": "^9.0.1",
52
- "@semantic-release/git": "^10.0.0",
53
- "@semantic-release/github": "^8.0.1",
54
- "@semantic-release/npm": "^8.0.0",
55
- "@semantic-release/release-notes-generator": "^10.0.2",
56
- "eslint": "^8.7.0",
57
- "eslint-config-airbnb-base": "^15.0.0",
58
- "eslint-config-prettier": "^8.3.0",
59
- "eslint-plugin-prettier": "^4.0.0",
60
- "husky": "^7.0.4",
61
- "prettier": "2.5.1",
62
- "pretty-quick": "^3.1.3",
63
- "semantic-release": "^19.0.3"
50
+ "@commitlint/cli": "17.1.2",
51
+ "@commitlint/config-conventional": "17.1.0",
52
+ "@semantic-release/commit-analyzer": "9.0.2",
53
+ "@semantic-release/git": "10.0.1",
54
+ "@semantic-release/github": "8.0.6",
55
+ "@semantic-release/npm": "9.0.1",
56
+ "@semantic-release/release-notes-generator": "10.0.3",
57
+ "eslint": "8.26.0",
58
+ "eslint-config-airbnb-base": "15.0.0",
59
+ "eslint-config-prettier": "8.5.0",
60
+ "eslint-plugin-prettier": "4.2.1",
61
+ "husky": "8.0.1",
62
+ "prettier": "2.7.1",
63
+ "pretty-quick": "3.1.3",
64
+ "semantic-release": "19.0.5"
64
65
  },
65
66
  "prettier": {
66
67
  "singleQuote": true,
@@ -98,13 +99,18 @@
98
99
  "plugin:prettier/recommended"
99
100
  ],
100
101
  "env": {
101
- "commonjs": true,
102
- "es2021": true,
102
+ "commonjs": false,
103
103
  "node": true
104
104
  },
105
105
  "parserOptions": {
106
- "ecmaVersion": 12
106
+ "ecmaVersion": "latest"
107
107
  },
108
- "rules": {}
108
+ "rules": {
109
+ "import/extensions": [
110
+ {
111
+ "js": "always"
112
+ }
113
+ ]
114
+ }
109
115
  }
110
116
  }
package/src/cli.js CHANGED
@@ -1,11 +1,13 @@
1
- const program = require('commander');
1
+ import { program } from 'commander';
2
+ import { createRequire } from 'module';
2
3
 
3
- const pkg = require('../package.json');
4
- const { initGenerateComponentCommand } = require('./commands/generateComponent');
5
- const { getCLIConfigFile } = require('./utils/grcConfigUtils');
4
+ import initGenerateComponentCommand from './commands/generateComponent.js';
5
+ import { getCLIConfigFile } from './utils/grcConfigUtils.js';
6
6
 
7
- module.exports = async function cli(args) {
7
+ export default async function cli(args) {
8
8
  const cliConfigFile = await getCLIConfigFile();
9
+ const localRequire = createRequire(import.meta.url);
10
+ const pkg = localRequire('../package.json');
9
11
 
10
12
  // Initialize generate component command
11
13
 
@@ -13,4 +15,4 @@ module.exports = async function cli(args) {
13
15
 
14
16
  program.version(pkg.version);
15
17
  program.parse(args);
16
- };
18
+ }
package/src/cli.test.js CHANGED
@@ -1,4 +1,4 @@
1
- const cli = require('./cli');
1
+ import cli from './cli';
2
2
 
3
3
  describe('cli', () => {
4
4
  it('should be defined.', () => {
@@ -1,10 +1,10 @@
1
- const {
1
+ import {
2
2
  generateComponent,
3
3
  getComponentByType,
4
4
  getCorrespondingComponentFileTypes,
5
- } = require('../utils/generateComponentUtils');
5
+ } from '../utils/generateComponentUtils.js';
6
6
 
7
- function initGenerateComponentCommand(args, cliConfigFile, program) {
7
+ export default function initGenerateComponentCommand(args, cliConfigFile, program) {
8
8
  const selectedComponentType = getComponentByType(args, cliConfigFile);
9
9
 
10
10
  const componentCommand = program
@@ -41,7 +41,3 @@ function initGenerateComponentCommand(args, cliConfigFile, program) {
41
41
  componentNames.forEach((componentName) => generateComponent(componentName, cmd, cliConfigFile))
42
42
  );
43
43
  }
44
-
45
- module.exports = {
46
- initGenerateComponentCommand,
47
- };
@@ -1 +1 @@
1
- module.exports = `.TemplateName {}`;
1
+ export default `.TemplateName {}`;
@@ -1,4 +1,4 @@
1
- module.exports = `import React from 'react';
1
+ export default `import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import styles from './TemplateName.module.css';
4
4
 
@@ -1,4 +1,4 @@
1
- module.exports = `import React, { lazy, Suspense } from 'react';
1
+ export default `import React, { lazy, Suspense } from 'react';
2
2
 
3
3
  const LazyTemplateName = lazy(() => import('./TemplateName'));
4
4
 
@@ -1,4 +1,4 @@
1
- module.exports = `/* eslint-disable */
1
+ export default `/* eslint-disable */
2
2
  import TemplateName from './TemplateName';
3
3
 
4
4
  export default {
@@ -1,4 +1,4 @@
1
- module.exports = `import React from 'react';
1
+ export default `import React from 'react';
2
2
  import ReactDOM from 'react-dom';
3
3
  import TemplateName from './TemplateName';
4
4
 
@@ -1,4 +1,4 @@
1
- module.exports = `import React from 'react';
1
+ export default `import React from 'react';
2
2
  import { shallow } from 'enzyme';
3
3
  import TemplateName from './TemplateName';
4
4
 
@@ -1,4 +1,4 @@
1
- module.exports = `import React from 'react';
1
+ export default `import React from 'react';
2
2
  import { render, screen } from '@testing-library/react';
3
3
  import '@testing-library/jest-dom/extend-expect';
4
4
  import TemplateName from './TemplateName';
@@ -1,4 +1,4 @@
1
- module.exports = `import React, { lazy, Suspense } from 'react';
1
+ export default `import React, { lazy, Suspense } from 'react';
2
2
 
3
3
  const LazyTemplateName = lazy(() => import('./TemplateName'));
4
4
 
@@ -1,4 +1,4 @@
1
- module.exports = `import React, { FC } from 'react';
1
+ export default `import React, { FC } from 'react';
2
2
  import styles from './TemplateName.module.css';
3
3
 
4
4
  interface TemplateNameProps {}
@@ -1,20 +1,25 @@
1
- const chalk = require('chalk');
2
- const path = require('path');
3
- const replace = require('replace');
4
- const { camelCase, kebabCase, snakeCase, upperFirst } = require('lodash');
5
- const { existsSync, outputFileSync, readFileSync } = require('fs-extra');
6
-
7
- const componentJsTemplate = require('../templates/component/componentJsTemplate');
8
- const componentTsTemplate = require('../templates/component/componentTsTemplate');
9
- const componentCssTemplate = require('../templates/component/componentCssTemplate');
10
- const componentLazyTemplate = require('../templates/component/componentLazyTemplate');
11
- const componentTsLazyTemplate = require('../templates/component/componentTsLazyTemplate');
12
- const componentStoryTemplate = require('../templates/component/componentStoryTemplate');
13
- const componentTestEnzymeTemplate = require('../templates/component/componentTestEnzymeTemplate');
14
- const componentTestDefaultTemplate = require('../templates/component/componentTestDefaultTemplate');
15
- const componentTestTestingLibraryTemplate = require('../templates/component/componentTestTestingLibraryTemplate');
16
-
17
- function getComponentByType(args, cliConfigFile) {
1
+ import chalk from 'chalk';
2
+ import path from 'path';
3
+ import replace from 'replace';
4
+ import camelCase from 'lodash/camelCase.js';
5
+ import kebabCase from 'lodash/kebabCase.js';
6
+ import snakeCase from 'lodash/snakeCase.js';
7
+ import startCase from 'lodash/startCase.js';
8
+ import fsExtra from 'fs-extra';
9
+
10
+ import componentJsTemplate from '../templates/component/componentJsTemplate.js';
11
+ import componentTsTemplate from '../templates/component/componentTsTemplate.js';
12
+ import componentCssTemplate from '../templates/component/componentCssTemplate.js';
13
+ import componentLazyTemplate from '../templates/component/componentLazyTemplate.js';
14
+ import componentTsLazyTemplate from '../templates/component/componentTsLazyTemplate.js';
15
+ import componentStoryTemplate from '../templates/component/componentStoryTemplate.js';
16
+ import componentTestEnzymeTemplate from '../templates/component/componentTestEnzymeTemplate.js';
17
+ import componentTestDefaultTemplate from '../templates/component/componentTestDefaultTemplate.js';
18
+ import componentTestTestingLibraryTemplate from '../templates/component/componentTestTestingLibraryTemplate.js';
19
+
20
+ const { existsSync, outputFileSync, readFileSync } = fsExtra;
21
+
22
+ export function getComponentByType(args, cliConfigFile) {
18
23
  const hasComponentTypeOption = args.find((arg) => arg.includes('--type'));
19
24
 
20
25
  // Check for component type option.
@@ -48,7 +53,7 @@ function getComponentByType(args, cliConfigFile) {
48
53
  return cliConfigFile.component.default;
49
54
  }
50
55
 
51
- function getCorrespondingComponentFileTypes(component) {
56
+ export function getCorrespondingComponentFileTypes(component) {
52
57
  return Object.keys(component).filter((key) => key.split('with').length > 1);
53
58
  }
54
59
 
@@ -329,7 +334,7 @@ const componentTemplateGeneratorMap = {
329
334
  [buildInComponentFileTypes.LAZY]: componentLazyTemplateGenerator,
330
335
  };
331
336
 
332
- function generateComponent(componentName, cmd, cliConfigFile) {
337
+ export function generateComponent(componentName, cmd, cliConfigFile) {
333
338
  const componentFileTypes = ['component', ...getCorrespondingComponentFileTypes(cmd)];
334
339
 
335
340
  componentFileTypes.forEach((componentFileType) => {
@@ -370,7 +375,7 @@ function generateComponent(componentName, cmd, cliConfigFile) {
370
375
  // Will replace the TemplateName in PascalCase
371
376
  replace({
372
377
  regex: 'TemplateName',
373
- replacement: upperFirst(camelCase(componentName)),
378
+ replacement: startCase(camelCase(componentName)).replace(/ /g, ''),
374
379
  paths: [componentPath],
375
380
  recursive: false,
376
381
  silent: true,
@@ -427,9 +432,3 @@ function generateComponent(componentName, cmd, cliConfigFile) {
427
432
  console.log(chalk.yellow(`NOTE: The "dry-run" flag means no changes were made.`));
428
433
  }
429
434
  }
430
-
431
- module.exports = {
432
- generateComponent,
433
- getComponentByType,
434
- getCorrespondingComponentFileTypes,
435
- };
@@ -1,8 +1,12 @@
1
- const chalk = require('chalk');
2
- const deepKeys = require('deep-keys');
3
- const { prompt } = require('inquirer');
4
- const { merge } = require('lodash');
5
- const { accessSync, constants, outputFileSync, readFileSync } = require('fs-extra');
1
+ import chalk from 'chalk';
2
+
3
+ import deepKeys from 'deep-keys';
4
+ import inquirer from 'inquirer';
5
+ import merge from 'lodash/merge.js';
6
+ import fsExtra from 'fs-extra';
7
+
8
+ const { accessSync, constants, outputFileSync, readFileSync } = fsExtra;
9
+ const { prompt } = inquirer;
6
10
 
7
11
  // Generate React Config file questions.
8
12
 
@@ -35,7 +39,7 @@ const projectLevelQuestions = [
35
39
 
36
40
  // --- component level questions.
37
41
 
38
- const componentLevelQuestions = [
42
+ export const componentLevelQuestions = [
39
43
  {
40
44
  type: 'input',
41
45
  name: 'component.default.path',
@@ -162,7 +166,7 @@ async function updateCLIConfigFile(missingConfigQuestions, currentConfigFile) {
162
166
  }
163
167
  }
164
168
 
165
- async function getCLIConfigFile() {
169
+ export async function getCLIConfigFile() {
166
170
  // --- Make sure the cli commands are running from the root level of the project
167
171
 
168
172
  try {
@@ -200,8 +204,3 @@ async function getCLIConfigFile() {
200
204
  return process.exit(1);
201
205
  }
202
206
  }
203
-
204
- module.exports = {
205
- componentLevelQuestions,
206
- getCLIConfigFile,
207
- };