[툴] npm, npx, yarn
얼마 전 node.js가 나오기 전까지만 해도
자바스크립트는 브라우저에서만 돌아가는 언어라고 생각했다.
어느 날 javascript관련 공부를 하다가 브라우저 없이 터미널에서 노드로 실행하는 것을 보고 깜짝 놀랐다.
그리고 npm을 통해 패키지를 간편하게 설치하고 설정파일에 자동으로 반영되는 것을 보고 두번 놀랏다!!!
npm, npx, yarn은
노드 실행환경에서 의존관계 패키지를 관리하기 위한 명령어이다.
1. npm : Node Package Manager 패키지 설치관련 명령어
도움말 : npm -help
사용법 : npm <command>
Usage:
npm install install all the dependencies in your project
프로젝트 내 dependencies를 설치한다.npm install <foo> add the <foo> dependency to your project
프로젝트에 의존관계를 추가한다.npm test run this project's tests
프로젝트의 테스트를 실행한다.npm run <foo> run the script named <foo>
지정한 이름의 스크립트를 실행한다.npm <command> -h quick help on <command>
명령어에 대한 빠른 도움말npm -l display usage info for all commands
모든 명령어에 대한 사용정보를 보여준다npm help <term> search for help on <term> (in a browser)
용어에 대한 도움말을 보여준다.npm help npm more involved overview (in a browser)
관련된 더 많은 개괄적 내용을 보여준다.
- 셸에서 npm -help를 실행하면 위와 같은 사용법 설명이 나온다.
전체 명령어
access, adduser, audit, bin, bugs, cache, ci, completion, config, dedupe, deprecate, diff, dist-tag, docs, doctor, edit, exec, explain, explore, find-dupes, fund, get, help, hook, init, install, install-ci-test, install-test, link, ll, login, logout, ls, org, outdated, owner, pack, ping, pkg, prefix, profile, prune, publish, rebuild, repo, restart, root, run-script, search, set, set-script, shrinkwrap, star, stars, start, stop, team, test, token, uninstall, unpublish, unstar, update, version, view, whoami
모듈 설치와 관련된 명령어
- npm install -option <foo> : 설치
- npm uninstall : 제거
- npm update : 업데이트
자주 사용하는 옵션 ex) npm install -g foo
- -D : (--save-dev) 해당 프로젝트에서만 사용할 의존관계저장 프로젝트 내에 설치된다.
- -g : ( --global) 전역적인 패키지로 다수의 프로젝트에서 사용하는 모듈을 전역 패키지 경로에 설치해 공동사용
옵션 -g를 사용했을 때 패키지가 설치되는 경로
- 윈도우 : 사용자폴더\AppData\Roaming\npm\node_modules
- 맥OS : /usr/local/lib/node_modules
출처: https://develope-myself.tistory.com/122 [Amy의 일상기록]
※ 자세한 내용은 셸에서 npm help <명령어> 을 입력하면 브라우저에서 html문서로 확인가능
https://develope-myself.tistory.com/206
[npm] npm uninstall
이 내용은 npm help uninstall를 통해 확인한 공식 문서의 해석입니다. 사용법 npm uninstall [<@scope>/] [@ ]... [-S|--save|--no-save] 설명 (해석) 원문 This uninstalls a package, completely removing ever..
develope-myself.tistory.com
https://develope-myself.tistory.com/207
[npm] npm update
이 글은 npm이 설치된 환경에서 npm help update로 확인한 문서를 번역한 내용입니다. 사용법 npm update [-g] [ ...] 설명 수행 내용 This command will update all the packages listed to the latest version (..
develope-myself.tistory.com
2. NPX : Node Package eXecute 노트패키지 실행 명령어
npx : npm exec
Run a command from a local or remote npm package // 로컬/원격 npm패키지로부터 명령어실행
Usage: 사용법
npm exec -- <pkg>[@<version>] [args...]
npm exec --package=<pkg>[@<version>] -- <cmd> [args...]
npm exec -c '<cmd> [args...]'
npm exec --package=foo -c '<cmd> [args...]'
Options:
[--package <pkg>[@<version>] [--package <pkg>[@<version>] ...]]
[-c|--call <call>]
[-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
[-ws|--workspaces] [--include-workspace-root]
alias: x => 따라서 npm exec 대신 npx
https://develope-myself.tistory.com/208
[npx] npx
이 글은 npm help exec 로 확인한 문서 내용을 해석한 내용입니다. 사용법 npm exec -- [@ ] [args...] npm exec --package= [@ ] -- [args...] npm exec -c ' [args...]' npm exec --package=foo -c ' [args...]'..
develope-myself.tistory.com
npx는 원격 혹은 로컬의 노드모듈 패키지를 실행하는 명령어이다.
https://nodejs.dev/learn/the-npx-nodejs-package-runner
The npx Node.js Package Runner
npx is a very cool way to run Node.js code, and provides many useful features
nodejs.dev
위 사이트에서 npx의 구체적인 내용을 볼 수 있었다.
2017년 7월 npm 5.2버전부터 사용가능한 강력한 명령어라고 한다.
장점
1. 로컬 모듈명령어의 쉬운 실행 :
기존에는 글로벌 위치에 실행 모듈을 두고 실행을 해야했다. 때문에 동일한 명령어에 대한 여러 버전이 글로벌 경로이 있을 경우 사용하기 어려웠지만, npx는 정확한 경로 설정없이도 프로젝트 안의 노드모듈에서 해당 명령어를 찾아낸다
2. 간단한 사용
별도의 설치가 필요없고, 같은 명령어에 다른 버전이 존재한다면 간단하게 @version을 붙이면된다 foo@latest
3. 다른 노드 버전에 연결
npx node@10 -v #v10.18.1
npx node@12 -v #v12.14.1
npx를 잘 몰라서 전에 nvm으로 다른 노드를 사용한 적이 있었는데, 최신 노드를 사용하는데 특정 라이브러리가 최신 노드에서는 비정상적으로 돌아갔다. 최신 노드를 굳이 삭제하고 하위 버전을 사용하기는 싫어 nvm으로 해결했는데 굳이 nvm 설치없이 npx를 활용하면 되는 거였다.......
npx는 npm exec로 대체할 수 있기도 한데 둘 사이의 차이점은 npx의 경우 옵션이나 플래그나 위치인수에 비해 앞에 와야한다는 점이고, npm exec는 -- 더블하이픈을 통해서 구분 파싱을 막아 순서를 제어할 수 있다는 점이다.
3. YARN
Yarn does this quickly, securely, and reliably
이 툴은 npm과 마찬가지로 페이스북에서 만든 패키지 매니저이다.
npm보다 성능, 버전관리, 보안등의 문제를 개선하였다.
npm 위에서 동작하기 때문에 npm과 호환되어 npm이든 yern이든 크게 다른 점은 없다
다만, 더 빠르고 안정적이고 안전한 관리가 가능하다.
사용법
https://classic.yarnpkg.com/en/docs/usage
Yarn
Fast, reliable, and secure dependency management.
classic.yarnpkg.com
Starting a new project 새 프로젝트 시작 | yarn init |
Adding a dependency dependency 추가 | yarn add [package] yarn add [package]@[version] yarn add [package]@[tag] |
글로벌로 설치. 다수프로젝트가 공동사용 | yarn global add package_name |
Add to devDependencies devDependency추가 | yarn add [package] --dev |
Add to peerDependencies peerDependency추가 | yarn add [package] --peer |
Add to optionalDependencies optionalDependency추가 | yarn add [package] --optional |
Upgrading a dependency 업그레이드 | yarn upgrade [package] yarn upgrade [package]@[version] yarn upgrade [package]@[tag] |
Removing a dependency 삭제 | yarn remove [package] |
Installing all the dependencies of project 프로젝트 모든 패키지 설치 | yarn yarn install |
yarn의 장점
속도
캐시를 이용해 이전에 설치된 패키지를 재다운로드 할 필요가 없음
거의 모든 작업을 동시에 진행 => 속도의 향상
신뢰성(안정성)
결정적 알고리즘 사용으로 인한 동일한 lock파일이면 동일한 설치를 보장
한 시스템에서 작동하는 모든 설정을 다른 시스템에서도 정확히 동일하게 작동함을 보장
결정적 알고리즘 (deterministic algorithm)
예측한 그대로 동작하는 알고리즘
어떤 특정한 입력이 들어오면 언제나 똑같은 과정을 거쳐서 언제나 똑같은 결과를 내놓는다.
보안성
코드 실행전 모든 패키지의 체크섬을 통해 무결성확인
무결성이란?
원래의 정보 또는 신호가 전송/저장/변환 중에 또는 그후에도 동일함을 유지하는 것
https://www.npmjs.com/package/yarn
yarn
📦🐈 Fast, reliable, and secure dependency management.. Latest version: 1.22.18, last published: 2 months ago. Start using yarn in your project by running `npm i yarn`. There are 1104 other projects in the npm registry using yarn.
www.npmjs.com
https://velog.io/@kysung95/%EA%B0%9C%EB%B0%9C%EC%83%81%EC%8B%9D-npm%EA%B3%BC-yarn
[개발상식] npm과 yarn
패키지 관리 툴로는 대표적으로 npm과 yarn이 있습니다.여러분들은 평소 어떠한 패키지 설치 모듈을 사용하나요?
velog.io