Node.js로 개발할 때 자주 사용하는 코드를 정리했다.
Crypto
Crypto는 OpenSSL 해시, HMAC, cipher, decipher, 서명, 증명 함수 등의 wrapper 세트를 포함한 암호 기능을 제공하는 모듈이다.
비밀번호를 데이터베이스에 암호화해서 저장할 때 사용할 수 있는 sha256 암호화 예제다.
const crypto = require('crypto'); // ES6 - import crypto from 'crypto';
const secret = 'abcdefg';
const hash = crypto.createHmac('sha256', secret)
.update('I love cupcakes')
.digest('hex');
console.log(hash);
// Prints:
// c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e
파일 시스템
// 현재 파일 경로
__filename; // D:\workspace\diagram\main.js
// 현재 디렉터리
__dirname; // D:\workspace\diagram
// 경로 연결
path.join(__dirname, '/test') // /home/dirname/test
// 상대적인 경로로 연결.
path.resolve('/foo/bar', './baz') // /foo/bar/baz
// 경로에 해당하는 속성을 가져온다.(root, dir, base, ext, name)
path.parse("/usr/local/test.jpg")
// 경로에서 파일명만 가져오기
path.basename('/foo/bar/baz/asdf/quux.html') // Returns: 'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html') // Returns: 'quux'
// 디렉터리 이동. cwd 변경.
process.chdir('/tmp');
// 파일이동, 이름 변경
fs.renameSync(oldPath, newPath);
// 파일 삭제
fs.unlinkSync(path);
Gulp
gulpfile.babel.js를 사용할 때 SyntaxError 발생
gulpfile에 ES6 문법을 사용할 때, 다음 에러가 뜰 수 있다. 예를 들어, import 할 때.
SyntaxError: Unexpected reserved word
babel-core가 없을 때 발생할 수 있다.
# babel 있는지 확인
npm ls babel
# 없으면 설치
npm install babel-core --save-dev
Express.js
// 응답 헤더 지정
res.set('Content-Type', 'image/png');
// URL 파싱
require('url').parse(req.url)
// 정규식 패턴을 사용한 라우팅 (puml로 끝나는 경우)
app.get(/\.puml$/, function(req, res) {
}
NPM 사용
# production으로 모듈 설치
NODE_ENV=production npm install --only=prod
# 개발 디펜던시만 설치
npm install --only=dev
모듈
내가 사용했던 유용한 Node.js 모듈이다. 더 많은 모듈을 npmjs에서 검색할 수 있다.
- serve-index : 파일 목록을 제공할 수 있음.
- node-plantuml : plantuml 파일을 생성할 수 있음.