Skip to content

Instantly share code, notes, and snippets.

@eezing
Last active March 13, 2019 15:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save eezing/6aa3b59137260916ea7fdd4040faa72a to your computer and use it in GitHub Desktop.
Save eezing/6aa3b59137260916ea7fdd4040faa72a to your computer and use it in GitHub Desktop.

Node Starter

Get Started

Run from a new project folder:

curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/node-starter.sh | sh
#!/bin/bash
# Git init
git init;
# Make directory
mkdir "src";
mkdir "src/__tests__";
mkdir ".vscode";
# Download files
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_package.json --output package.json;
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_.eslintrc.yaml --output .eslintrc;
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_.prettierrc.yaml --output .prettierrc;
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_.prettierignore --output .prettierignore;
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_.gitignore --output .gitignore;
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_.eslintignore --output .eslintignore;
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_.vscode_launch.json --output .vscode/launch.json;
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_src_index.js --output src/index.js;
curl https://gist.githubusercontent.com/eezing/6aa3b59137260916ea7fdd4040faa72a/raw/root_src___tests___test.js --output src/__tests__/test.js;
# Install packages
npm init -f;
npm install --save-dev \
jest \
prettier \
eslint \
eslint-plugin-prettier \
eslint-config-prettier \
eslint-plugin-react \
babel-eslint \
babel-jest \
husky
# Run prettier
npm run pretty;
# Git commit
git add -A;
git commit -m "initial commit"
node_modules
coverage
env:
browser: true
commonjs: true
es6: true
node: true
jest: true
parser: babel-eslint
plugins:
- prettier
extends:
- eslint:recommended
- plugin:react/recommended
- prettier
settings:
react:
version: "16.0"
rules:
no-console: 2
react/display-name: 0
# OS
.DS_Store
# Logs
logs
*.log
npm-debug.log*
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules
jspm_packages
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# build
.build
.next
node_modules
coverage
semi: true
bracketSpacing: true
singleQuote: true
jsxBracketSameLine: true
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "Node: Nodemon",
"processId": "${command:PickProcess}",
"restart": true,
"protocol": "inspector"
}
]
}
{
"scripts": {
"start": "node src",
"dev": "PORT=3000 nodemon --watch src ./src",
"debug": "PORT=3000 nodemon --inspect --watch src ./src",
"pretty": "prettier --write '**/*.js'",
"test": "npm run test:jest && npm run test:lint",
"test:watch": "jest --watch",
"test:jest": "jest --coverage",
"test:lint": "eslint ./ --ext .js --ext .mjs",
"test:gitunstaged":
"if ! [[ -z $(git diff) ]]; then echo \"tree has un-staged changes\"; exit 1; fi",
"precommit": "npm run test:gitunstaged && npm test"
},
"jest": {
"testURL": "http://localhost/"
}
}
describe('describe my unit test', () => {
const foo = 'bar';
test('expect foo to equal bar', () => expect(foo).toEqual('bar'));
});
'use strict';
const PORT = process.env.PORT;
const url = require('url');
const http = require('http');
const server = http.createServer((req, res) => {
const { pathname } = url.parse(req.url);
if (pathname === '/healthz') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
} else {
res.statusCode = 404;
res.end();
}
});
server.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}`); //eslint-disable-line
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment