NVM ์ node ์ ๋ฒ์ ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. ๊ธฐ์กด์ node ๋ฅผ ์ ์ญ ์ค์นํ ๊ฒฝ์ฐ์๋, ๋ค์ ๋งํฌ์์ ์ ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก node ๋ฅผ ์ญ์ ํ์.
nvm ์ cURL ๋๋ homebrew ๋ก ์ค์นํ ์ ์๋ค.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash์ด ๋งํฌ๋ ๋ณ๊ฒฝ๋ ์ ์๋ค. ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ โ github: npm #installation
brew install nvmnvm ์ด ์ค์น๊ฐ ๋๋ฉด, ~/.zshrc ๋๋ ~/.bash_profile ๊ณผ ๊ฐ์ ์ ์ค์ ํ์ผ์ ๋ค์ ์คํฌ๋ฆฝํธ๊ฐ ์ถ๊ฐ๋๋ค.
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm์ถ๊ฐ๋์ง ์์ ๊ฒฝ์ฐ, ์ง์ ์ถ๊ฐํด์ค์ผ ํ๋ค.
์ด ๊ณผ์ ์ด ์๋ฃ๋๋ฉด, source ~/.zshrc (์ ์ค์ ํ์ผ ์ฌ์ค์ ) ๋๋ ํฐ๋ฏธ๋์ ์ฌ์์ ํด์ผ ํ๋ค.
nvm --version
>>> 0.33.11์์ ์ค์น ๋ช
๋ น์ ์คํํ๊ธฐ ์ ์ ~/.nvm ํด๋๊ฐ ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ค์์ ๋ช
๋ น์ด๋ก ํด๋๋ฅผ ์์ฑํ๊ณ , ๋ค์ ์ค์นํ๋ค.
mkdir ~/.nvmcurl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bashPlease note that upstream has asked us to make explicit managing
nvm via Homebrew is unsupported by them and you should check any
problems against the standard nvm install method prior to reporting.
You should create NVM's working directory if it doesn't exist:
mkdir ~/.nvm
You have $NVM_DIR set to "/Users/ElohimAwmar/.nvm", but that directory does not exist. Check your profile files and environment.
์ curl ๋ฉ์ธ์ง๋, ์์ ์ ์ค์ ์ ํ ๋ค์ curl ๋ช ๋ น์ ํ์ ๋ ๋ฐ์ํ ์ค๋ฅ์ด๋ค.
LTS: Long Term Support ์ ์ฝ์๋ก, ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅ๋๋ ๋ฒ์ ์ด๋ค.
- LTS ๋ฒ์ ์ค์น:
nvm install --lts(๊ถ์ฅ) - ์์ ํ ์ต์ ๋ฒ์ ์ค์น:
nvm install stable - ํน์ ๋ฒ์ ์ผ๋ก ์ค์น:
nvm install 8.9.4 - ํน์ ๋ฒ์ ์ค ์ต์ ๋ฒ์ ์ผ๋ก ์ค์น:
nvm intsall v8
# version 8.9.4 ๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ nvm install 8.9.4
nvm install stable # ์ด๊ฒ๋ณด๋ค LTS ์ค์น๋ฅผ ์ถ์ฒํ๋ค.
>>> Downloading and installing node v11.4.0...
Downloading https://nodejs.org/dist/v11.4.0/node-v11.4.0-darwin-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with shasum -a 256
Checksums matched!
Now using node v11.4.0 (npm v6.4.1)
Creating default alias: default -> stable (-> v11.4.0)์ค์น๋ ๋
ธ๋์ ๊ฒฝ๋ก๋ which ๋ช
๋ น์ด๋ก ํ์ธํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ~/.nvm/ ์๋ ์ ์ฅ๋๋ค.
which node
>>> /Users/ElohimAwmar/.nvm/versions/node/v11.4.0/bin/node์ถ๊ฐ ์ฌ์ฉ๋ฒ์ ๋ค์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ โ github.com: nvm #usage-1
nvm install <version>: ํด๋น ๋ฒ์ ์ผ๋ก ๋
ธ๋๊ฐ ์ค์น๋๋ค.
nvm install --lts # LTS ๋ฒ์ ์ค์น (๊ถ์ฅ)
nvm install 8.9.4
nvm install stable # ์์ ํ ์ต์ ๋ฒ์ ์ค์น
nvm install v8 # ํด๋น ๋ฒ์ ์ ์ต์ ๋ฒ์ ์ ์๋ ์ค์นnvm ls-remote
nvm ls: ์ค์น๋ node ๋ฒ์ ๋ชฉ๋ก ํ์ธ
~ ยป nvm ls
-> v10.14.2
v11.4.0
system
default -> 10.14.2 (-> v10.14.2)
node -> stable (-> v11.4.0) (default)
stable -> 11.4 (-> v11.4.0) (default)
iojs -> N/A (default)
lts/* -> lts/dubnium (-> v10.14.2)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.15.1 (-> N/A)
lts/carbon -> v8.14.0 (-> N/A)
lts/dubnium -> v10.14.2nvm alias <alias> <version>
nvm alias default 8.9.4nvm use <version>, nvm use <alias>
npm ์ javascript ์ ํจํค์ง ๊ด๋ฆฌ์์ด๋ค. ์ข๋ ๋์ ์๋์ ์บ์ฑ ์์คํฌ์ ์ํ๋ค๋ฉด, Yarn ์ ์ฌ์ฉํ ์ ์๋ค.
npm ์ ํตํด ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋, ๋ด ํ๋ก์ ํธ๋ก npm ํจํค์ง๋ก ์ค์ ํด์ผ ํ๋ค. ๊ทธ๊ฒ์ด npm init์ด๋ฉฐ, ํจํค์ง์ ๋ชจ๋ ์ค์ ์ ๋ด๊ณ ์๋ package.json ํ์ผ์ ์์ฑํ๋ค.
package.json ๋ด์ฉ์ ๋ํ ์์ธํ ์ค๋ช ์ ๊ฐ์ฑํ๋ก๊ทธ๋๋งน: ๋ชจ๋ ์์ง๋ง ๋ชจ๋ ๋ชจ๋ฅด๋ package.json์ ์ฐธ์กฐํ์.
- ์์น:
node_project_dir/package.json - ์ฉ๋: ํ๋ก์ ํธ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ์ผ (์์กด์ฑ ๊ด๋ฆฌ ํ์ผ)
- ์์ฑ ์์ :
npm initํธ์ถ ์์ - ์ผ๋ฐ ์์กด์ฑ๊ณผ ๊ฐ๋ฐ ์์กด์ฑ
- ๊ฐ๋ฐ ์์กด์ฑ์, ์ฑ์ ์คํํ ๋๋ ํ์ ์์ผ๋, ๊ฐ๋ฐํ ๋ ํ์ํ ํจํค์ง๋ฅผ ์๋ฏธํ๋ค.
npm install <package_name>: package.json ๋ด๋ถ์dependenciesํญ๋ชฉ์ ํด๋น ํจํค์ง๋ฅผ ๋ฃ๋๋ค. (--save์ต์ ์ด ๊ธฐ๋ณธ๊ฐ์ด๋ค)npm install --save-dev <package_name>: package.json ๋ด๋ถ์devDependenciesํญ๋ชฉ์ ํด๋น ํจํค์ง๋ฅผ ๋ฃ๋๋ค.
- ์ด๋ ๊ฒ ์์กด์ฑ ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ๊ณ ๋๋ฉด, ์ธ์ ๋ ์ง
npm install๋ช ๋ น์ผ๋ก ํด๋น ํจํค์ง๋ค์ ์ค์นํ ์ ์๋ค.
- ํจํค์ง๋ฅผ ๋ช ๋ น์ด๊ฐ ์คํ๋ ๋๋ ํ ๋ฆฌ์ ์ค์นํ๋ ๊ฒ. ํ๋ก์ ํธ ๋ณ๋ก ๊ด๋ฆฌํด์ผ ํ๋ ํจํค์ง๋ฅผ ์ค์นํ๋ ๋ฐฉ์์ด๋ฉฐ, ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ด๋ค.
- system node ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ,
usr/lib/node_modules/์์ ์ค์นํ๋ค.- ๋ด๊ฐ ์ฌ์ฉ์ค์ธ node ์์น๋
which node๋ก ํ์ธํ ์ ์๋ค. - ์์์ ๋์จ ๊ฒฝ๋ก์์
bin์lib/node_modules/๋ก ๋์ฒดํ ๊ฒฝ๋ก์ ์ค์น๋๋ค. - ์์คํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ํด๋์,
nvm์ผ๋ก ๊ด๋ฆฌ๋๋~/.nvm/.../bin/ํด๋๊ฐ ํ๊ฒฝ๋ณ์PATH์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋์๋ ์ฐธ์กฐํ ์ ์๋ ๊ฒ์ด๋ค.
- ๋ด๊ฐ ์ฌ์ฉ์ค์ธ node ์์น๋
-g์ต์ ์ ๋ถ์ฌ์ผ ํ๋ค.- ์์คํ
์ ์ ์ฅํ๋ฏ๋ก, ๋ฃจํธ ๊ณ์ ์ด ์๋๋ผ๋ฉด
sudo๊ถํ์ด ํ์ํ๋ค. - node ์ฑ์์ ๋ฐ๋ก require ํ ์ ์๋ค.
npm link <package_name>์ด ํ์ํ๋ค. - ๋ณดํต cli ์์ ๋ฐ๋ก ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊ธ๋ก๋ฒ ์ค์น๋ฅผ ํ๋๋ฐ, ์๋์ ๊ฑธํ ์ค์น์์ ๋ณผ ์ ์๋ฏ,
package.json์script๋ฅผ ์์ฑํ๊ฑฐ๋,npx <module_name>์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, ์ ์ญ์ค์น๋ ๋ณดํต ๊ถ์ฅํ์ง ์๋๋ค. ์ด๊ฒ ์ ๋ง ํ๋ก์ ํธ ๋ง๋ค ๋๊ฐ์ด ์ค๋ณต๋๊ณ , ํ๋ก์ ํธ ์์กด์ฑ์ผ๋ก ๋ค๋ฃฐ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ์ ์ญ์ ์ค์นํ๋๋ก ํ์.
npm ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ๋ก ์ค์นํ๊ธฐ ๋๋ฌธ์, ๋ด ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ์์์ npm intall <package_name> ํ๋ฉด ๋๋ค.
โ stackoverflow: Why do we need to install gulp globally and locally?
- gulp version ๊ด๋ฆฌ
- script ์์ Node ๊ฐ
require()๋ก gulp ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ gulp ๊ฐ ๋ก์ปฌ ๋ชจ๋์ด์ด์ผ ํ๋ค.- ์ด๊ฒ์
NODE_PATH์ global module ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ด์์ง ์๊ธฐ ๋๋ฌธ
- ์ด๊ฒ์
- ๋ก์ปฌ ๋ชจ๋์ด ๋ ๋น ๋ฅด๊ฒ ๋ก๋๋๊ธฐ ๋๋ฌธ
- ์คํฌ๋ฆฝํธ์์ ๋ฟ ์๋๋ผ ์์์ gulp ๋ฅผ ์คํํ๊ธฐ ์ํด์ , system
PATH์์ ํฌํจ๋์ด ์๋ ๊ธ๋ก๋ฒ์ ์ค์น๊ฐ ํ์
โ codeburst.io: Maybe donโt globally-install that Node.js package
๋ฐฉ๋ฒ์, NPM script ๋ฅผ ์ ์ํ๋ ๊ฒ์ด๋ค. package.json์ ๋ค์๊ณผ ๊ฐ์ ํญ๋ชฉ์ ์ถ๊ฐํ์:
...
"scripts": {
"gulp": "./node_modules/.bin/gulp"
},
...
./node_modules/.bin/gulp์ด gulp ์คํ ํ์ผ์ด๋ค. ์ด๊ฒ์ ๋งํฌ ํ์ผ๋ก,./node_modules/gulp/bin/gulp.js๋ฅผ ๋งํฌํ๋ค.
์ด์ ๋ค์ ๋ช ๋ น์ผ๋ก gulp ๋ฅผ ์คํํ ์ ์๋ค.
npm run gulp์ด๊ฒ์ ๋ ๊ฐ๋จํ๊ฒ ํ ์ ์๋ค. NPM ์ npm run์ ์คํํ ๋, ์์ PATH์ <prj_root>/node_modules/.bin/ ๋ฅผ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์, gulp ๋ง์ผ๋ก๋ ์ถฉ๋ถํ๋ค.
...
"scripts": {
"gulp": "gulp"
},
...์ด ์์ PATH ๋, npm run gulp ๋ก gulp ์คํ ํ ์์ฑ๋๋ ๋ก๊ทธ์ ๋ค์ด๊ฐ๋ณด๋ฉด ์ ์ ์๋ค. ๋ก๊ทธ์ ๊ฒฝ๋ก์ ๊ทธ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
/Users/ElohimAwmar/.npm/_logs/2018-12-18T10_37_59_151Z-debug.log
...
8 verbose lifecycle pj2@1.0.0~gulp: PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/Users/ElohimAwmar/projects/practice/js/pj2/node_modules/.bin:/usr/local/Cellar/pyenv-virtualenv/1.1.0/shims:/usr/local/var/pyenv/shims:/Users/ElohimAwmar/.rbenv/shims:/Users/ElohimAwmar/.rbenv/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/Users/ElohimAwmar/bin:/usr/local/bin
...
Gulp ๊ฐ ๊ธ๋ก๋ฒ ์ค์น๋ฅผ ์ง์ํ๊ธฐ ์ํด cli ๊ธฐ๋ฅ์ ๋ด๋์๋ค. ์ด๊ฒ์ ๋ก์ปฌ node_modules ๋ฅผ ์ฐพ์์ ๊ทธ ์์ gulp ๋ฅผ ์คํ์์ผ์ฃผ๋ ๊ฒ์ ๋ถ๊ณผํ๋ค.
npm install gulp-cli -g2017๋
์ค๋ฐ, npm ์ npx ๋ผ๋ ํจํค์ง๋ฅผ ๋ฐฐํฌํ๋ค. ์ด ํจํค์ง๋ npm ์ด ์ค์น๋ ๋, ๋ณด์ด์ง ์๊ฒ ์ ์ญ์ผ๋ก ์ค์น๋๋ค. npx ๋ ์ ์ญ ์ค์น ์์ด ์ ์ญ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ํจํค์ง์ด๋ค. 1๋ฒ์์ ํ ๊ฒ๊ณผ ๊ฐ์ npm run-srcipt ์ ๊ฑฐ์ ๋น์ทํ๊ฒ ๋์ํ๋ค.
gulp ๊ฐ ๋ก์ปฌ ์ค์น๋ ํ๋ก์ ํธ ๋ด์์ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด ๋์ํ๋ค:
npx gulp์ ๋ช
๋ น์ผ๋ก ์คํ๋๋ gulp ๋ ./node_modules/.bin/ ์์ ์๋ค. ๋ง์ฝ ์์ผ๋ฉด, npx ๋ ์ผ์ค์๋ ๋ฐฉ๋ฒ์ ํตํด ์ค์น์ฌ๋ถ๋ฅผ ํ์ธํ๋ค.
์ด๊ฒ์ ๋งค์ฐ ๋จ์ํ๊ณ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค. ๋ค๋ง, npx ์ ํจ๊ป ์ ๋ ฅ๋์ด์ผ ํ๋ ์ธ์๊ฐ์ด ๋ง์ ๋ช ๋ น์ด ๊ธธ์ด์ง๋ค๋ฉด, npx ๋ณด๋ค๋ npm run-script ๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋ณด์:
npx myDataModule -path ./some/dir/file.txt -output ./log/data.log๋งค๋ฒ ์ด ๋ช ๋ น์ ์ ๋ ฅํ๋ ๊ฒ์ ์ฌ๋ฌ๋ชจ๋ก ์งํ๋กญ์ง ์์ ์๊ฐ์ด๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฏธ๋ฆฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ด๋๋ ๊ฒ์ด ํ๋ช ํ๊ฒ ๋ค:
...
"scripts": {
"loadData": "myDataModule -path ./some/dir/file.sql -output ./log/data.log"
},
...npm run loadDatanpm -v
npm install <package_name>[@<tag>]
global ์ค์น๋
-g์ต์ ์ด ํ์ํ๋ค.
npm install underscore
npm install underscore@1.8.0 # ๋ฒ์ ์ ๋ช
์ํ๊ณ ์ถ์ ๋npm uninstall <package_name>
npm install
npm update <package_name>
npm search <package_name>
์ด ๋ช ๋ น์ด๋ ์ฒ์ ์ฌ์ฉํ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ต์ฅํ ๋ง์ด ์ก์๋จน๋๋ค. ํด๋ผ์ฐ๋ ์๋ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, npm package ๊ฒ์ ์ฌ์ดํธ์์ ๊ฒ์ํ์.
์ฐธ์กฐ โ zerocho.com: npm ๋ช ๋ น์ด
package.json์scriptํญ๋ชฉ์ ์ ์๋start๋ช ๋ น์ผ๋ฅผ ์คํํ๋ ๋ถ๋ถ์ด๋ค.- ์ด ์ค์ ์ด ์๋ค๋ฉด,
node server.js๊ฐ ์คํ๋๋ค. - ๊ด๋ จ ๋ช
๋ น์ด:
npm stop:npm startํ ๊ฒ์ ๋ฉ์ถ๋ค.npm restart: ๋ฉ์ท๋ค ์ฌ์คํ.
package.json์test๋ช ๋ น์ด ์คํ
- ๊ทธ ์ด์ธ์ ์คํฌ๋ฆฝํธ ์คํ
nvm๊ณผ ๊ฐ์ ๋ ธ๋ ๋ฒ์ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐnode.js๊ฐ ์์ ๊ฒฝ์ฐ ๊ฐ์ด ์ค์นํด์ค๋ค.
nvm๊ณผ ๊ฐ์ ๋ ธ๋ ๋ฒ์ ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ ๊ฒฝ์ฐ
yarn --version
brew upgrade yarn
๊ธฐํ ๋ช ๋ น์ด๋ ๋ค์์ ์ฐธ์กฐํ์ โ yarn ๊ณต์ ๋ฌธ์: ์ฌ์ฉ๋ฒ