목록Nodejs (25)
만족
tsc 로 컴파일할때 항상 ts 파일만 컴파일하지는 않는다. ts + js 가 섞인 프로젝트에서 allowJS 옵션을 통해 js 파일도 tsc input으로 사용될 수 있다. 그러나 이렇게 js 를 tsc 인풋으로 사용할 때는 일부 오류들이 표시되지 않아 문제를 인식할 수 없다. 그 중 얼마 전 발견한 하나의 케이스를 소개한다. iterator + for-of iterator는 iterable(반복 가능) 한 객체로 Array, Map 도 iterable 객체다. iterable 객체는 for-of 를 이용해 순회 가능하다. for (const str of ['1', '2']){ console.log(str);} 이런식으로 of 뒤에 iterable 객체를 두고, of 앞의 변수에 할당하여 반복한다...
yarn classic yarn classic(v1) 과 npm에서 의존성을 추가하면 node_modules 에 설치된다. 새로운 프로젝트를 생성하고, yarn init 으로 초기화한 후 yarn add react 를 이용해 react 의존성을 추가하면 node_modules에 react 패키지가 추가된 모습을 볼 수 있다. 그런데 분명 추가한 것은 react 하나뿐이지만, js-tokens 와 loose-envify 패키지도 존재하는 것을 확인할 수 있다. node_modules/react/package.json의 dependencies를 살펴보면 loose-envify를 사용하고 있고, node_modules/loose-envify/package.json의 dependencies를 살펴보면 js-to..
여러가지 nodejs 데몬 툴 중 forever와 pm2가 특히 유명한데, forever는 기능은 적지만 사용법이 매우 간단해 운영중인 nodejs 서비스에 사용 중이었다. 그러나 모니터링, 무중단 업데이트와 같은 다양한 기능들이 필요하게 되었고, 따라서 forever에서 pm2로 이주해보려 한다. https://pm2.keymetrics.io/ PM2 - Home Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance. pm2.keymetrics.io PM2 Nodejs 데몬 프로세스 매니저다. 단순..
프로젝트에서 githook을 이용해 커밋 전 검사를 하고 있다. yarn eslint ./src --cache && tsc --noEmit && yarn test 3개의 커맨드가 모두 정상적으로 종료되어야만 커밋되고, 이 작업들은 현재 의존성을 가지고 있어 이전 작업이 끝나야만 다음 커맨드가 실행된다. (yarn eslint ... > tsc ... > yarn test...) 정말 의존성이 필요할까? eslint는 js, jsx파일의 코드 포맷 검사, tsc는 ts, tsx파일의 코드 유효성 검사, test는 테스트를 수행한다. 사실 이들의 순서가 바뀌어도 상관없고, 심지어는 동시에 실행되어도 결과에는 영향을 미치지 않는다. 위 명령을 실행하면 약 20~30초가량이 소모되는데, 점점 프로젝트의 규모가 ..
지난 포스트에서 jest, eslint를 적용해봤다. 그렇다면 이 스크립트를 커밋 전 실행해서 안전한 코드일때만 허가할 수는 없을까? https://www.npmjs.com/package/husky husky Modern native Git hooks made easy. Latest version: 8.0.1, last published: 13 days ago. Start using husky in your project by running `npm i husky`. There are 2316 other projects in the npm registry using husky. www.npmjs.com husky 허스키를 사용하면 githooks 스펙을 손쉽게 사용할 수 있다. https://git-s..
https://jestjs.io/docs/getting-started Getting Started · Jest Install Jest using your favorite package manager: jestjs.io 설치 yarn add --dev jest devDependency에 jest를 추가한다 yarn jest --init 초기 설정이 필요한 경우(browser 환경, typescript 사용 등) 위 커맨드를 이용한다. 테스트 코드 작성 // index.js // object[key] value is not null? const requireValues = (object, keys = []) => { let result = true; keys.map(key => { if (!object[ke..
top 명령어를 사용하면 실행 중인 nodejs 프로세스는 다음과 같이 표시된다. 별도의 부가 정보 없이 node로만 표시되기 때문에 정확히 어떤 스크립트가 실행되고 있는지는 알 수 없다. ps -aef | grep node 이 명령을 이용하면 실행 중인 node 프로세스의 상세 정보를 함께 보여준다 (윈도우 계열에서는 사용할 수 없다) 마지막 행에 node프로세스가 실행중인 스크립트 정보가 표시된다. (정확히는 node 프로세스 실행 시 사용한 커맨드 전체가 출력된다) 첫 행이 pid이므로, 종료할 프로세스가 있는 경우 그 node 프로세스가 어떤 스크립트를 실행하는 것인지 확인한 후 kill 커맨드를 이용해 종료할 수도 있다.
nodejs 환경에서 개발하다 보면 오타 등으로 인한 syntax error 가 발생하는 일이 잦다. const foo= ''; fooo.split('1'); // fooo is not defined 가령 이런 코드는 당연히 오류가 나지만, 실행 전에 알아차릴 수 있는 오류임에도(fooo가 정의되지 않음) 적극적으로 알려주지 않는다. 그래서 추후 오류가 발생하면 코드를 한줄한줄 읽어 내려가면서 찾곤 하는데 여간 쓸데없고 재미없는 일이 아니다. Eslint eslint를 사용하면 문법 오류를 사전에 알려주고, 심지어 자동으로 수정해줄 수도 있다. 예를 들어 위의 오류 코드에 eslint를 적용하면 오류를 하이라이팅해줄 뿐만 아니라 일부 규칙에 어긋나는(foo의 경우 선언 후 사용되지 않음)구문까지 잡아낼 ..