Code Monkey home page Code Monkey logo

reacttemplate's Introduction

React Template

This repository exists as a starting point for a new React 18 application (with hooks). The build system, testing, linting, formatting, compiling, spellchecking and more are all pre-configured.

This repository should be generic enough that most people can use it out of the box. It comes with an existing "hello world" application which you can build and run right away.

It also includes all of the nice-to-haves to ensure that you code is high quality and follows best practices. This is very helpful for a beginner who needs nudges in the right direction but also helps an expert focus on the higher level problems and not worry about missing smaller errors.

Setup

Core Dependencies Included

NPM scripts

  • npm clean-install - install all dependencies. Do this first before anything else
  • npm run start - starts a local server which can be accessed at http://localhost:7579. As long as this server is running it'll auto refresh whenever you save changes.
  • npm run release - creates a release build of your application. All output files will be located in the dist folder. This also runs all of the checks to ensure the code works, is formatted, etc.
  • npm run verify - checks the application without building
  • npm run bundle-analysis - opens a bundle analysis UI showing the file size of each dependency in your output JavaScript bundle.
  • npm run lint - runs ESLint enforcing good coding style and habits and erroring if any are broken.
    • npm run lint:fix - fixes any auto-fixable ESLint errors
  • npm run format - runs Prettier to reformat all files
  • npm run autofix - fix all autofixable issues
  • npm run ts-check - runs the TypeScript compiler to see TypeScript errors
  • npm run spellcheck - runs CSpell to see any typos. If the word is misidentified, add it to cspell.json.
  • npm run test - runs Jest and all unit tests
  • npm run clean - removes all auto-generated files and dependencies
  • npm run list-outdated-dependencies - lists the dependencies that have newer versions available with links to their repository and changelog
  • npm run update-dependencies - update and install all outdated dependencies

Why use this instead of create-react-app?

Tools like create-react-app bring everything and the kitchen sink when setting up a new project. They are great to start quickly, but as soon as you want to customize or understand how it all works you'll have trouble. My goal is to expose all of the tools and show how easy it can be to configure from scratch. This makes it easier to debug and tweak settings to fit your needs.

reacttemplate's People

Contributors

creativetechguy avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

reacttemplate's Issues

How do you know that `@babel/typescript` is sync with tsconfig.json?

As title. I have read many projects as references, and you're the only person who set it up differently when using @babel/preset-typescript. I assume that you have done what I'm trying to understand:

When TypeScript and/or Babel receive updates, how do you guarantee that your template can still work? It's possible that Babel might not follow the rules defined by tsconfig.json and read by the language server of one's IDE. From my understanding, this might be a problem when a user follows the hints by IDE or tsc --noEmit but Babel might still compile it differently. (I'm not very sure about this part.)

tsconfig.json

"target": "ESNext",

"esModuleInterop": true,
"moduleResolution": "bundler",

"verbatimModuleSyntax": true,

babel.config.js

"@babel/typescript",
{
allowDeclareFields: true,
onlyRemoveTypeImports: true,
},

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.