참고
이미지의 각 파일명을 이 게시물에선 아래와같이 사용함
package.json= 파일1
uuid = 파일2
uuid-bin.js = 파일3
터미널에서 실시한 명령어 = 명령어1
NPM
NodeJs repositories (https://www.npmjs.com/) 에서 관리하는 패키지를 사용하고 관리할수있도록 도와줌
위의 예는 uuid 패키지이다.
이미지 설명
해당 패키지를 npm install uuid로 설치하면 위와 같은 이미지의 파일들이 생기고 아래와 같은 일이 발생한다
그리고 npm uuid
node_modules의 .bin폴더 안에 uuid라는 명령어의 심볼릭 링크 파일이 생성된다 (파일1)
1번에서 본 파일은 심볼릭 링크 파일이고 사실 「../uuid/dist/bin/uuid」을 가리키고 있고 그 내용이 (파일2) 이다
#!/usr/bin/env node 라는 부분은 CLI가 해당 스크립트를 실행할때 nodejs로 실행하라는 의미이다
├── node_modules │ ├── .DS_Store │ ├── .bin │ │ └── uuid -> ../uuid/dist/bin/uuid
그리고 결론적으로 파일2의 경로를 타고 들어가면 실행하는 (파일3) 내용이다
.bin안에 uuid란 결국 uuid메인 소스코드를 간결하게 실행할수있는 CLI명령어라고 한다(생활코딩 참조했지만.. 아직 이해부족)
설치후 uuid 라고 커맨드를 입력하면 동작이 되어야하는데 안됨.. 그래서 일단 해당 .bin폴더에서 node uuid라고 하니 동작함..#!/usr/bin/env node 가 제대로 동작을 안하나..
가장 아래에서 typescript를 예시로 추가작성함
NPX
npm의 m이 매니징(관리)의 약자라면 npx의 x는 exec(실행) 의 약자
npm install 없이 바로 다운로드 실행후 삭제한다
npx uuid 를 하면 이미지의 커맨드1 의 결과가 나온다
uuid를 다운 -> 실행 -> 삭제를 해서 결과를 출력함
실행시 매번 다운로드 하기때문에 효율에는 좋지 않고 한번만쓰는 설치 패키지등은 이걸 사용하면 좋다
NPM의 .bin과 커맨드에 관해서
npm i typeScript -g
설치 후 node_modules 폴더의 bin파일에 tsc 파일이 생성되는 것을 볼 수 있다 ..bin
내부에 있는 파일들은 스크립트에서 경로 없이 파일 이름으로만 바로 실행시킬수 있다.
node_modules/.bin/tsc 파일이름
// 원래는 이렇게
tsc source.ts
// 경로 생략 가능, 뒷부분은 컴파일 할 파일 이름