{"id":45326620,"url":"https://github.com/emakina-cee-oss/react-cli","last_synced_at":"2026-02-21T08:37:44.099Z","repository":{"id":57222882,"uuid":"91709030","full_name":"emakina-cee-oss/react-cli","owner":"emakina-cee-oss","description":"An easy to use CLI for starting and building React projects in a fast and consistent way.","archived":false,"fork":false,"pushed_at":"2018-07-13T11:33:33.000Z","size":305,"stargazers_count":5,"open_issues_count":6,"forks_count":0,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-11-24T01:20:44.157Z","etag":null,"topics":["cli","react"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emakina-cee-oss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-18T15:23:46.000Z","updated_at":"2022-05-05T15:27:43.000Z","dependencies_parsed_at":"2022-09-05T07:00:25.744Z","dependency_job_id":null,"html_url":"https://github.com/emakina-cee-oss/react-cli","commit_stats":null,"previous_names":["emakina-cee-oss/generator-emakinacee-react"],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/emakina-cee-oss/react-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emakina-cee-oss%2Freact-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emakina-cee-oss%2Freact-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emakina-cee-oss%2Freact-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emakina-cee-oss%2Freact-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emakina-cee-oss","download_url":"https://codeload.github.com/emakina-cee-oss/react-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emakina-cee-oss%2Freact-cli/sbom","scorecard":{"id":374450,"data":{"date":"2025-08-11","repo":{"name":"github.com/emakina-cee-oss/react-cli","commit":"f4c64af87141f69bfeb9c557b9b6e20a9a4e5bcb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":3,"reason":"Found 5/14 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T13:53:29.199Z","repository_id":57222882,"created_at":"2025-08-18T13:53:29.199Z","updated_at":"2025-08-18T13:53:29.199Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29677656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T06:23:40.028Z","status":"ssl_error","status_checked_at":"2026-02-21T06:23:39.222Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","react"],"created_at":"2026-02-21T08:37:43.972Z","updated_at":"2026-02-21T08:37:44.087Z","avatar_url":"https://github.com/emakina-cee-oss.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EMAKINA React CLI\n\nAn easy to use CLI for building React projects in a fast and consistent way.\n\n[![Build Status](https://travis-ci.org/emakina-cee-oss/react-cli.svg?branch=master)](https://travis-ci.org/emakina-cee-oss/react-cli)\n[![npm version](https://badge.fury.io/js/emakina-react-cli.svg)](http://badge.fury.io/js/emakina-react-cli)\n\nThe EMAKINA React CLI is built on top of [Create React App](https://github.com/facebookincubator/create-react-app).\n  \nThis way you can utilize all the awesome features of create-react-app\nand in addition you have access to some even more awesome features like\n+ [File Generators](#file-generators)\n+ Built in SCSS support\n+ Flexible ESLint configuration via .eslintrc file\n+ Easy state and side effects management with [CerebralJS](https://cerebraljs.com/)\n+ [Adjustable webpack config](#change-webpack-config) (without eject)\n+ [Workbox](#service-worker-with-workbox)\n+ [Styleguide](#styleguide)\n\n\n\n\n## Getting started\n\n__1. Install the CLI__\n```sh\nnpm install -g emakina-react-cli\n```\n\n__2. Create a new Project__\n```sh\nreact new \u003cprojectName\u003e\n```\n\n__3. Take off__\n```sh\ncd \u003cprojectName\u003e\nnpm start\n```\n\n\u003e Also have a look to the [Create React App](https://github.com/facebookincubator/create-react-app) \ndocumentation for more information.\n\n\n\n\n\n## File Generators\n\nTo add new parts to your app simply tell your console what you need.\n```sh\nreact generate \u003cscaffold\u003e \u003cname\u003e [module]\n```\n\n*As a shorthand you can type:*\n```sh\nreact g \u003cscaffold\u003e \u003cname\u003e [module]\n```\n\nScaffold   | Usage                                             |\n-----------|---------------------------------------------------|\nComponent  | `react g component \u003cAwesomeComponent\u003e`            |\nContainer  | `react g container \u003cAwesomeContainer\u003e`            |\nModule     | `react g module \u003cAwesomeModule\u003e`                  |\nSignal     | `react g signal \u003cawesomeSignal\u003e [\u003cModuleName\u003e]`   |\nAction     | `react g action \u003cawesomeAction\u003e [\u003cModuleName\u003e]`   |\nFactory    | `react g factory \u003cawesomeFactory\u003e [\u003cModuleName\u003e]` |\nCompute    | `react g compute \u003cawesomeCompute\u003e [\u003cModuleName\u003e]` |\n\nIf the `ModuleName` is added the files are created in the folder of the desired module.\nIf the `ModuleName` is omitted the files will be created in the shared folder.\n\n### Some Comfortable Convenience\nAs the CLI's main intend is to help you save time while being consistent,\nit is built to only write the necessary things.\n\nSo `react g signal foo bar` will still generate `fooSignal` in the module folder `Bar`.\n\n\n\n### Component\n```sh\nreact g component ComponentName\n```\n\nSpawns the following Files:\n+ `src/components/ComponentName/ComponentName.js`\n+ `src/components/ComponentName/ComponentName.module.scss`\n+ `src/components/ComponentName/ComponentName.spec.js`\n+ `src/components/ComponentName/ComponentName.md`\n\n__Options__\n+ `-c` or `--connect` (Connect a Component to Cerebral)\n+ `-s` or `--stateful` (Generate a Stateful Component)\n\n__Variable Path__  \nBy default, components are created in the components folder of the project.  \nIt is possible to create them in different locations like shown in the examples below.\n\n```sh\nreact g component somewhere/ComponentName\n```\nWill result in `src/components/somewhere/ComponentName/ComponentName.js`.\n\n```sh\nreact g component ./fancyComponents/ComponentName\n```\nWill result in `src/fancyComponents/ComponentName/ComponentName.js`.\n\n\n\n### Container\n```sh\nreact g container ContainerName\n```\n\nSpawns the following Files:\n+ `src/containers/ContainerName/ContainerName.js`\n+ `src/containers/ContainerName/ContainerName.spec.js`\n\n__Options__\n+ `-c` or `--connect` (Connect a Component to Cerebral)\n+ `-s` or `--stateful` (Generate a Stateful Component)\n\n__Variable Path__  \nBy default, containers are created in the containers folder of the project.  \nIt is possible to create them in different locations like shown in the examples below.\n\n```sh\nreact g container somewhere/ContainerName\n```\nWill result in `src/containers/somewhere/ContainerName/ContainerName.js`.\n\n```sh\nreact g container ./fancyContainers/ContainerName\n```\nWill result in `src/fancyContainers/ContainerName/ContainerName.js`.\n\n\n\n### Module\n```sh\nreact g module AwesomeModule\n```\n\nSpawns the following Files:\n+ `src/modules/Awesome/AwesomeModule.js`\n+ `src/modules/Awesome/AwesomeModule.spec.js`\n\n\n\n### Signal\n```sh\nreact g signal awesomeSignal SomeModule\n```\n\nSpawns the following Files:\n+ `src/modules/SomeModule/signals/awesomeSignal.js`\n+ `src/modules/SomeModule/signals/awesomeSignal.spec.js`\n\n\n\n### Action\n```sh\nreact g action awesomeAction SomeModule\n```\n\nSpawns the following Files:\n+ `src/modules/SomeModule/actions/awesomeAction.js`\n+ `src/modules/SomeModule/actions/awesomeAction.spec.js`\n\n\n\n### Factory\n```sh\nreact g factory awesomeFunctionFactory SomeModule\n```\n\nSpawns the following Files:\n+ `src/modules/SomeModule/factory/awesomeFunctionFactory.js`\n+ `src/modules/SomeModule/factory/awesomeFunctionFactory.spec.js`\n\n\n\n### Compute\n```sh\nreact g compute awesomeCompute SomeModule\n```\n\nSpawns the following Files:\n+ `src/modules/SomeModule/computes/awesomeCompute.js`\n+ `src/modules/SomeModule/computes/awesomeCompute.spec.js`\n\n\n\n\n\n## Project Structure\nThere is a `public` folder for static files and a `src` folder for the fancy app code.\n\nAs CerebralJS is used for state and side effects management the `modules` folder is introduced \nto split Cerebral's state into modules. Therefore each module has its own folder \nwhich contains signals, actions, computes, and so on.\n\n```\n|-public\n    |-index.html\n|-src\n    |-components \n        |-Button\n            |-Button.js\n            |-Button.md\n            |-Button.module.scss\n            |-Button.spec.js\n    |-containers \n        |-App \n            |-App.js\n            |-App.spec.js\n    |-modules \n        |-Root\n            |-RootModule.js\n        |-App\n            |-signals\n                |-exampleSignal.js\n                |-exampleSignal.spec.js\n            |-actions\n                |-exampleAction.js\n                |-exampleAction.spec.js\n            |-computes\n                |-exampleCompute.js\n                |-exampleCompute.spec.js\n            |-factories\n                |-exampleFactory.js\n                |-exampleFactory.spec.js\n            |-AppModule.js\n    |-styles\n        |-modules\n            |-flex.module.scss\n        |-settings\n            |-_settings.breakpoints.scss\n            |-_settings.colors.scss\n        |-tools\n            |-_tools.units.scss\n        |-_essentials.scss\n        |-global.scss\n    |-shared\n        |-signals\n            |-exampleSignal.js\n            |-exampleSignal.spec.js\n        |-actions\n            |-exampleAction.js\n            |-exampleAction.spec.js\n        |-computes\n            |-exampleCompute.js\n            |-exampleCompute.spec.js\n        |-factories\n            |-exampleFactory.js\n            |-exampleFactory.spec.js\n        |-providers\n            |-exampleProvider.js\n            |-exampleProvider.spec.js\n    |-index.js\n    |-controller.js \n```\n\n\n\n\n\n## Change Webpack Config\nWith the help of react-app-rewired it is very easy to\nextend or adjust the webpack config used by the underlying react-scripts.\n\nSimply add a new rewire file inside the `config` folder and import it to `config-overrides.js`.\n\nFor Detailed information have a closer look to the documentation of\n[react-app-rewired](https://github.com/timarney/react-app-rewired).\n\n\n\n\n\n## Styles\nBy default, CSS Modules are part of the setup.  \nAs soon as a file is css/scss file ending is prefixed with module e.g. `foo.module.scss`\nWebpack will do the job and applies CSS Module scoping to the styles.\n\nAlso the support for SCSS is enabled by default.  \nJust replace the .css by the .scss file ending and you are fine to use\nthe full power of SASS.\n\n\n\n### \"Framework\"\nAs you can see in the [Project Structure](#project-structure)\nthere is already a little frame for the styles.\n\nEspecially for the use of SCSS the _essentials.scss file is used to share all\nvariables, settings, tools, etc. across the component or shared style modules.\n\n**Shared style modules** are placed in styles/modules/ just import and use them when\nneeded.  \nThey can be very convenient for e.g. utility styles to quickly apply some flex box rules\nor add a spacing.\n\n\n\n### SASS MQ\nTo work with media queries [SASS-MQ](https://github.com/sass-mq/sass-mq) is included.\nThe breakpoints are configured in `./src/styles/settings/_settings.breakpoints.scss`.\n\n\n\n\n\n## Service Worker with Workbox\nEverything is set to build an offline first progressive web app right from the beginning.\n\n[Workbox](https://developers.google.com/web/tools/workbox/) is added with a basic \nconfiguration to generate a ready to use service worker and pre-caching manifest for \nall resources build within the Webpack pipeline.\n\nThe service worker will be registered for production builds only, for local testing \nyou can simply use `npm run build` and `npm run serve:build` to start up a server.\n\nThe configuration can be changed in `./config/rewireWorkboxGenerate.js`\n\n[Plugin documentation and further info](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin#injectmanifest_plugin)\n\n\n__\"But I want to write my own service worker!\"__  \nAwesome! But you might want to have a look to the InjectManifest plugin to just automate\nthe generation of the pre-caching manifest to add it to your own service worker file.\n\nJust create a new rewire file e.g. `./config/rewireWorkboxInject.js` and replace the\n`rewireWorkboxGenerate` in the rewire composition in `./config-overrides.js`.\n\n[More info about react-app-rewire-workbox](https://github.com/davejm/react-app-rewire-workbox)\n\n\n__\"But I don't want a service worker!\"__  \nIn case you do not want a service worker at all it is enough to remove \nthe `registerServiceWorker();` call from `./src/index.js`.\n\nFor cleanup you can remove `./src/registerServiceWorker.js` and remove\n`rewireWorkboxGenerate` from the rewire composition in `./config-overrides.js`.\n\n\n\n\n\n## Styleguide\n\n[React Styleguidist](https://react-styleguidist.js.org/) is available and can be used out of \nthe box. It documents all components in the components directory.\n\nRun `npm run styleguide` for development. It will start React Styleguidist in watch mode.  \nOr use `npm run styleguide:build` if you want to host your style guide.\nYou can check the build with `npm run serve:styleguide`\n\nTo provide additional information to your components use the `.md` file which\nis generated automatically for all new components.\n\nReact Styleguidist will use prop-types and defaults automatically also the \ninformation from JS Doc comments are used in the style guide.\n\nHave a look to the [React Styleguidist](https://react-styleguidist.js.org/docs/getting-started.html) \ndocumentation for more information.\n\n\n\n\n\n## How to Contribute\nWe really appreciate every contribution, so if you have some cool ideas have a look to the \n[Contributing Guidelines](https://github.com/emakina-cee-oss/react-cli/blob/master/CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femakina-cee-oss%2Freact-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femakina-cee-oss%2Freact-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femakina-cee-oss%2Freact-cli/lists"}