From 84fb7e8c6fd753f22802e99c201fa587edd1537c Mon Sep 17 00:00:00 2001 From: Stefan Imhoff Date: Fri, 14 Oct 2022 19:11:56 +0200 Subject: [PATCH] feat(bin): add setup script for default TS/Eslint/Prettier setup --- bin/setup-node-project.sh | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 bin/setup-node-project.sh diff --git a/bin/setup-node-project.sh b/bin/setup-node-project.sh new file mode 100755 index 0000000..f5fca9e --- /dev/null +++ b/bin/setup-node-project.sh @@ -0,0 +1,69 @@ +#!/usr/bin/env bash + +git init +cat < .gitignore +node_modules +EOT + +npm init -y +npm install --save-dev typescript prettier eslint eslint-config-prettier lint-staged +# npx eslint --init + +cat < .prettierrc.json + { + "trailingComma": "es5", + "useTabs": true, + "tabWidth": 4, + "printWidth": 100, + "semi": true, + "singleQuote": true +} +EOT + +cat < .eslintrc.json +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": ["eslint:recommended", "plugin:react/recommended", "prettier"], + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": ["react"], + "rules": { + "indent": ["warn", "tab"], + "quotes": ["error", "single"], + "semi": ["error", "always"] + } +} +EOT + +touch .eslintignore + +node -e "let pkg=require('./package.json'); pkg.scripts.build='tsc'; require('fs').writeFileSync('package.json', JSON.stringify(pkg, null, 2));" + +npx husky-init && npm install + +cat < .husky/pre-commit +#!/bin/sh +. "$(pwd "$0")/_/husky.sh" + +npx lint-staged +EOT + + +cat < .lintstagedrc.json +{ + "**/*.{js,jsx,ts,tsx}":[ + "npx prettier --write", + "npx eslint --fix" + ] +} +EOT + +npx typesync