{"_id":"@anynines/react-boilerplate","_rev":"10-f4de935f6dcb4cfd678a4f7b941e9f7a","name":"@anynines/react-boilerplate","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@anynines/react-boilerplate","version":"1.0.0","main":"index.js","license":"MIT","scripts":{"start":"yarn webpack-dev-server --hot --inline --history-api-fallback --config ./webpack.dev.js","build":"rm -rf public/dist && yarn webpack --config ./webpack.prod.js","lint":"yarn lint:js && yarn lint:css","lint:css":"yarn stylelint './src/**/*.tsx'","lint:js":"yarn eslint . --ext .ts,.tsx","test":"jest --verbose","test:watch":"jest --watch --verbose","test:coverage":"jest --verbose --coverage --maxWorkers=4","open:coverage":"open ./coverage/lcov-report/index.html"},"devDependencies":{"@avarteqgmbh/happy-linter-configs":"^1.1.0","@types/enzyme":"^3.10.5","@types/enzyme-adapter-react-16":"^1.0.6","@types/jest":"^25.1.4","@types/react-dom":"^16.9.8","@types/react-router-dom":"^5.1.5","@types/styled-components":"^5.0.1","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","babel-plugin-react-remove-properties":"^0.3.0","clean-webpack-plugin":"^3.0.0","css-loader":"^3.4.2","enzyme":"^3.11.0","enzyme-adapter-react-16":"^1.15.2","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-import-resolver-alias":"^1.1.2","eslint-loader":"^3.0.3","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.8.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.19.0","eslint-plugin-react-hooks":"^4.0.2","extract-loader":"^5.0.1","file-loader":"^5.1.0","fork-ts-checker-webpack-plugin":"^5.0.8","hard-source-webpack-plugin":"^0.13.1","html-loader":"^0.5.5","identity-obj-proxy":"^3.0.0","jest":"^25.1.0","jest-fetch-mock":"^3.0.3","jest-styled-components":"^7.0.2","jest-svg-transformer":"^1.0.0","style-loader":"^1.1.3","stylelint":"^13.2.1","stylelint-config-recommended":"^3.0.0","stylelint-config-styled-components":"^0.1.1","stylelint-custom-processor-loader":"^0.6.0","stylelint-order":"^4.0.0","stylelint-processor-styled-components":"^1.10.0","svg-react-loader":"^0.4.6","sw-precache-webpack-plugin":"^1.0.0","ts-jest":"^26.4.1","ts-loader":"^7.0.5","typescript":"^3.8.3","url-loader":"^4.0.0","webpack":"^4.42.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.10.3","webpack-merge":"^5.1.4"},"dependencies":{"@anynines/design-system":"^0.1.0","react":">=16","react-dom":">= 16.8.0","styled-components":"^5.0.1"},"gitHead":"c97716ccb16f362881890eda7facbe4c21bfa52d","description":"<p align=\"center\" style=\"display: flex; align-items: center; justify-content: center;\">   <img src=\"https://user-images.githubusercontent.com/61698985/95465266-31704200-097b-11eb-813c-ddc9a0b2f202.png\" /> </p>","_id":"@anynines/react-boilerplate@1.0.0","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-RtYq1tEOKK759hervu6KonLdiF16QaZMusb7r5sMTBu4T4nSDbNjzuNCe0Eb+20Q8pFoIYJCviW91xKj5gTijw==","shasum":"4d097e14ca31dda42fce4516a6e284c10f83f0e9","tarball":"https://registry.npmjs.org/@anynines/react-boilerplate/-/react-boilerplate-1.0.0.tgz","fileCount":25,"unpackedSize":24379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhBx+CRA9TVsSAnZWagAAbBsP/RjhDp63C7Xb7vIISfAd\nhuF4EPRZ33KiXR28ypD04zf7D0GBgOEzAw7cjitiGx4xc0r5h4K1D479caHR\nC8lLat/iTTYNTcwgkvar3evle6YPI19wmLjqxaQ6/cXPNjMdqheRC38efq8d\nk3U/guncbmAcAOsz7YVpBx6tFDVvJcDzM+l30crvfQX/ztLbTpHxwhPisPt7\n4i/oYMel1XcEJ99vHBrTDohXgd2T1HkTiYX2lKAa+Ea8HB8Uqhi0MpmPhbrD\ndnXLr8XspPE+jQaumljGWEwcXObl1pS/lFOAWXDogLh9w6x/oTSGfvO0hDfs\nhRbdk7TxeAPZ371npR2xH9EWjvM3tKZ1PnVvoQvRoT7mXxRTPRqkxoWA0MJ7\nHBeaojpTkqS2kb5USHM/yOzC2eQhorPiaKFHXhk8CmHbscQlLzIZOWVbrZct\nTDcRAqXwlaEkdNvzGamXZZ2/FMJol9dicnP3VNyyq0IXDxRxigIw+ev3zU+X\nlHWgjZwLOy97LdXGr2NvVBkcte1bkYYpfqjHTRP8GDyUXq55xWVeNO+GXDDl\nr2wK8P25ehFKFO2ZT06PbTPIUwQCz+7TUgIjv2/5yvxZa6Eaf2aakcCTMkKx\nQcyel32G0gAa1E2HolAiVDOTmCmLi/PjVe5ZyDwo5CrSwWlBToe6phUJsVQy\n/mB6\r\n=Rc8j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFiTI9yJ47KfqbHM/g19e2YBaIGFb3sR04+kfpDToe92AiEAw6RpR/Dum1eDQ74KX7o5iFnH/N6gIeg4N8/9HuWLsRY="}]},"maintainers":[{"name":"anynines-johannchopin","email":"jchopin@anynines.com"},{"name":"dleidisch-a9s","email":"leidisch@anynines.com"}],"_npmUser":{"name":"anynines-johannchopin","email":"jchopin@anynines.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-boilerplate_1.0.0_1602493566418_0.026784478177928284"},"_hasShrinkwrap":false},"1.0.1":{"name":"@anynines/react-boilerplate","version":"1.0.1","main":"index.js","license":"MIT","scripts":{"start":"yarn webpack-dev-server --hot --inline --history-api-fallback --config ./webpack.dev.js","build":"rm -rf public/dist && yarn webpack --config ./webpack.prod.js","lint":"yarn lint:js && yarn lint:css","lint:css":"yarn stylelint './src/**/*.tsx'","lint:js":"yarn eslint . --ext .ts,.tsx","test":"jest --verbose","test:watch":"jest --watch --verbose","test:coverage":"jest --verbose --coverage --maxWorkers=4","open:coverage":"open ./coverage/lcov-report/index.html"},"devDependencies":{"@types/enzyme":"^3.10.5","@types/enzyme-adapter-react-16":"^1.0.6","@types/jest":"^25.1.4","@types/react-dom":"^16.9.8","@types/react-router-dom":"^5.1.5","@types/styled-components":"^5.0.1","@typescript-eslint/eslint-plugin":"^2.24.0","@typescript-eslint/parser":"^2.24.0","babel-plugin-react-remove-properties":"^0.3.0","clean-webpack-plugin":"^3.0.0","css-loader":"^3.4.2","enzyme":"^3.11.0","enzyme-adapter-react-16":"^1.15.2","eslint":"^6.8.0","eslint-config-airbnb":"^18.1.0","eslint-import-resolver-alias":"^1.1.2","eslint-loader":"^3.0.3","eslint-plugin-import":"^2.20.1","eslint-plugin-jest":"^23.8.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.19.0","eslint-plugin-react-hooks":"^4.0.2","extract-loader":"^5.0.1","file-loader":"^5.1.0","fork-ts-checker-webpack-plugin":"^5.0.8","hard-source-webpack-plugin":"^0.13.1","html-loader":"^0.5.5","identity-obj-proxy":"^3.0.0","jest":"^25.1.0","jest-fetch-mock":"^3.0.3","jest-styled-components":"^7.0.2","jest-svg-transformer":"^1.0.0","style-loader":"^1.1.3","stylelint":"^13.2.1","stylelint-config-recommended":"^3.0.0","stylelint-config-styled-components":"^0.1.1","stylelint-custom-processor-loader":"^0.6.0","stylelint-order":"^4.0.0","stylelint-processor-styled-components":"^1.10.0","svg-react-loader":"^0.4.6","sw-precache-webpack-plugin":"^1.0.0","ts-jest":"^26.4.1","ts-loader":"^7.0.5","typescript":"^3.8.3","url-loader":"^4.0.0","webpack":"^4.42.0","webpack-cli":"^3.3.11","webpack-dev-server":"^3.10.3","webpack-merge":"^5.1.4"},"dependencies":{"@anynines/design-system":"^0.1.0","react":">=16","react-dom":">= 16.8.0","styled-components":"^5.0.1"},"gitHead":"3ac5c85a2a514b3595388086ef521fe7bbaca02b","description":"<p align=\"center\" style=\"display: flex; align-items: center; justify-content: center;\">   <img src=\"https://user-images.githubusercontent.com/61698985/95465266-31704200-097b-11eb-813c-ddc9a0b2f202.png\" /> </p>","_id":"@anynines/react-boilerplate@1.0.1","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-mUM1JE1lU0YSD/QbL+JSZummaFBrPuo5R/OtHgtl8opU/YRLGk6FINyznaowDATyyC0jX0zKAoAlOs++szqyVg==","shasum":"33d1907e798691e2a85f891466fa911b44752c6f","tarball":"https://registry.npmjs.org/@anynines/react-boilerplate/-/react-boilerplate-1.0.1.tgz","fileCount":25,"unpackedSize":24310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhCLiCRA9TVsSAnZWagAAPUIQAJR99tBaJQKfPoxIKe1+\nTHLbenMLp6uHPOlcY/yyDN8gE90zbw/4oB/cMPTNjpisoAG9Hx0VXxl9y9DN\nSrFJbryZQQuvSCzn2dfk12JYX66o11IyxCSYsUVZAka392macqqBGHdijHmx\ndYaTgVfT6OYdFyN59RypE4JWSfj9Gd2J0PU5JeGf6FZDIzoFvzIkf4WDzfss\n02aP0TNdshlXSAfrcBHF+PGbxlwjAEBzDEb9vn525ER0i/JEjLagSIW3qNTe\n+ZhF9ihGtqrsN8AXExQfDbs2NOZ6vdv4kaDAOX1AMc/MzMdFJCuq7DA9syQY\nV2uq5I9moWlhi4LaWwJNzReIkB1emk3AJLoHSo6d4d1/f7tCzPMt3Ehveowl\nDmlQSjPlhviMs8aBGVicaD9yBF4em+YIgZDPHQsa83S+TkRuMvS2TpxcXyTD\nAyPDCCNzw4s5St0D4mSKVKNIuIZUvmvFtuOgYMzI6yO0I+xuKYezRsPZTA3i\ne2G97/dKoXd+KwySsZrU0qlAOZPMVpF0bnTeYjOprZORM7cIhCqle8JqrNmQ\n+JPMRQfWHZ/1jfvqIrufWUO8Uec+7mFX4jrJDnuM5nbELij5SSL5uf9eirmq\n0kyjMopKkFiod+dtpvHTcfvycuqEbzA5iUIC9DJJtNiGyA5aFbyDZUbevYna\nREU2\r\n=+xof\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBPuCMk2kYwQX0pWIdbwdlktdiMpF+k+r+vQ5ivCBphJAiEAgjmTkGHzjbQ/hgWOyue/w+bHNSRwqNkEWyOLxjpxmu8="}]},"maintainers":[{"name":"anynines-johannchopin","email":"jchopin@anynines.com"},{"name":"dleidisch-a9s","email":"leidisch@anynines.com"}],"_npmUser":{"name":"anynines-johannchopin","email":"jchopin@anynines.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-boilerplate_1.0.1_1602495201808_0.4118839040933402"},"_hasShrinkwrap":false}},"time":{"created":"2020-10-12T09:06:06.149Z","1.0.0":"2020-10-12T09:06:06.548Z","modified":"2024-05-14T06:37:35.243Z","1.0.1":"2020-10-12T09:33:21.970Z"},"maintainers":[{"email":"mney@anynines.com","name":"mney86"},{"email":"leidisch@anynines.com","name":"dleidisch-a9s"}],"description":"<p align=\"center\" style=\"display: flex; align-items: center; justify-content: center;\">   <img src=\"https://user-images.githubusercontent.com/61698985/95465266-31704200-097b-11eb-813c-ddc9a0b2f202.png\" /> </p>","license":"MIT","readme":"<p align=\"center\" style=\"display: flex; align-items: center; justify-content: center;\">\n  <img src=\"https://user-images.githubusercontent.com/61698985/95465266-31704200-097b-11eb-813c-ddc9a0b2f202.png\" />\n</p>\n\n----\n\nInitialise a React project easily using the anynines React boilerplate.\n\nIt comes with preconfigured features like:\n\n- 📦 Webpack\n- 🏷️ TypeScript\n- ⚛️ React\n  - 💄 styled-components\n  - 🎨 design-system\n- 🌗 Theming\n- ✅ Testing\n- 🚨 Linter\n- 👷 Travis\n- 🤡 Mocked API\n\n## 🎉 Quick Start\n\nGenerate your new GitHub repositories with this [repository templates](https://github.blog/2019-06-06-generate-new-repositories-with-repository-templates/) or fetch it locally using [degit](https://github.com/Rich-Harris/degit):\n\n```bash\nnpx degit anynines/anynines-react-boilerplate react-app\ncd react-app\n```\n\nInstall the dependencies...\n\n```bash\nyarn install\n```\n\n...then start development environment:\n\n```bash\nyarn start\n```\n\nNavigate to [localhost:9000](http://localhost:9000/). You should see your app running. Edit the `App` component file in `src`, save it, wait that the page reload: you should see your changes.\n\n## 📦 Build the app\n\nWe use [webpack](https://webpack.js.org/) to bundle the React app.\n\nYou can build it for development:\n\n```bash\nyarn start\n```\n\nor for production:\n\n```bash\nyarn build\n```\n\nThe generated web app is located in `public`.\n\n## 🏷️ TypeScript\n\nTypeScript's pre-configuration is written in a simple `tsconfig.json`. Modify it as you want.\n\nTo easily share global types definition, you can define them in a `.ts` file in `src/types`.\n\nThen export these types in `src/types/index.ts`:\n\n```typescript\nexport * from './myCreatedTypes'\n```\n\nNow you are able to consume them using the `@types` alias:\n\n```javascript\nimport { CustomType } from '@types'\n```\n\n## 🎨 Design system\n\nThe boilerplate render for you a [design-system](https://github.com/anynines/design-system) instance in `src/theme/ThemeProvider.tsx`. Adjust your options as you want by modifying `DesignSystemInstance` component's props.\n\nConsume the design-system components in the app:\n\n```javascript\nimport { Button, Icon } from '@anynines/design-system'\n```\n\n## 🌗 Theming\n\nYou can customize the default theme by modifying the `CUSTOM_THEME` object located in `src/theme/customTheme.ts`.\n\nConsume the `ThemeContext` using the `@theme` alias:\n\n```javascript\nimport { ThemeContext } from '@theme'\n\nconst { theme } = React.useContext(ThemeContext)\n```\n\n> Note: The design-system is instanciate and store in `src/designSystemStore.ts`.\n\n## ✅ Testing\n\n[Jest](https://jestjs.io/en/) is already configured with [enzyme](https://enzymejs.github.io/enzyme/). Run the tests using:\n\n```bash\nyarn test # run all tests\nyarn test:watch # rerun tests after modification\nyarn test:coverage # generate tests coverage\n```\n\nAdd tests by creating a new file `[MyComponent].test.js`. It should be located inside `src`.\n\n## 🚨 Linter\n\n[Eslint](https://eslint.org/) and [stylelint](https://stylelint.io/) are already configured. Check your code by running:\n\n```bash\nyarn lint # run linters\nyarn lint:js # run eslint linter\nyarn lint:css # run stylelint linter\n```\n\n## 👷 Travis\n\nThe boilerplate provide a [TravisCI](https://travis-ci.com/) basic configuration. On each new commit, it makes sure that the app build, that there are no linter errors and that the tests do not fail:\n\n```bash\nyarn build && yarn lint && yarn test\n```\n\n## 🤡 Mocked API\n\nThe boilerplate run a local mocked API in development environment. You can create `.json` files in `src/mockedApi` and fetch them at `/api/[filename].json`.\n\nYou can see it in action by running `yarn start` and go to [localhost:9000/api/users.json](http://localhost:9000/api/users.json). This file is located at `src/mockedApi/users.json`.\n\nYou can access these files by using the `@mockedApi` alias:\n\n```javascript\nimport users from '@mockedApi/users.json'\n```\n\n\n","readmeFilename":"README.md"}