npm ci๋ Mac์์ ์คํํ ๋ Linux OS์ ๋ํ ์ ํ์ ์ข ์์ฑ์ ์ค์นํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ Linux์์ ์คํํ ๋ Mac์ ๋ํ ์ ํ์ ์ข ์์ฑ์ ์ค์นํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
$ npm init -y; npm i [email protected]; npm ls; npm ci; npm ls
/private/tmp/d/package.json์ ์ผ์ต๋๋ค. { "๋ช ๋ช ๋", "๋ฒ์ ": "1.0.0", "์ค๋ช ": "", "main": "index.js", "์คํฌ๋ฆฝํธ": { "test": "echo \"์ค๋ฅ : ์ง์ ๋ ํ ์คํธ ์์ \ "&& exit 1" }, "ํค์๋": [], "์ ์": "", "license": "ISC" } > [email protected] ์ค์น ํ / private / tmp / d / node_modules / oax > ๋ ธ๋ ./postinstall.js npm ์๋ฆผ์ lockfile์ package-lock.json์ผ๋ก ์์ฑํ์ต๋๋ค. ์ด ํ์ผ์ ์ปค๋ฐํด์ผํฉ๋๋ค. npm WARN [email protected] ์ค๋ช ์์ npm WARN [email protected] ์ ์ฅ์ ํ๋๊ฐ ์์ต๋๋ค. npm ๊ฒฝ๊ณ ์ ํ์ ์๋ต ์ ํ์ ์ข ์์ฑ : [email protected] (node_modules / oax / node_modules / oax-windows-64) : npm ๊ฒฝ๊ณ ์๋ฆผ ๊ฑด๋ ๋ฐ๊ธฐ ์ต์ ์ข ์์ฑ : [email protected] ์ฉ ์ง์๋์ง ์๋ ํ๋ซํผ : { "os": "win32", "arch": "x64"}๋ฅผ ์ํจ (ํ์ฌ : { "os": "darwin", "์์น": "x64"}) npm ๊ฒฝ๊ณ ์ ํ์ ๊ฑด๋ ๋ฐ๊ธฐ ์ ํ์ ์ข ์์ฑ : [email protected] (node_modules / oax / node_modules / oax-linux-64) : npm ๊ฒฝ๊ณ ์๋ฆผ ๊ฑด๋ ๋ฐ๊ธฐ ์ต์ ์ข ์์ฑ : [email protected]์ ์ง์๋์ง ์๋ ํ๋ซํผ : { "os": "linux", "arch": "x64"}๋ฅผ ์ํจ (ํ์ฌ : { "os": "darwin", "์์น": "x64"}) + [email protected] 1.1 ์ด์ 2 ๊ฐ์ ํจํค์ง๋ฅผ ์ถ๊ฐํ๊ณ 4 ๊ฐ์ ํจํค์ง๋ฅผ ๊ฐ์ฌํ์ต๋๋ค. 0 ๊ฐ์ ์ทจ์ฝ์ ๋ฐ๊ฒฌ [email protected] / private / tmp / d โโโฌ [email protected] โโโ [email protected] โโโ ์ถฉ์กฑ๋์ง ์์ ์ ํ์ ์ข ์์ฑ [email protected] โโโ ์ถฉ์กฑ๋์ง ์์ ์ ํ์ ์ข ์์ฑ [email protected] npm WARN ์ค์น ์ ์ ๊ธฐ์กด node_modules / ์ ๊ฑฐ ์ค๋น > [email protected] ์ค์น ํ / private / tmp / d / node_modules / oax > ๋ ธ๋ ./postinstall.js 0.722s์ 3 ๊ฐ์ ํจํค์ง ์ถ๊ฐ [email protected] / private / tmp / d โโโฌ [email protected] โโโ [email protected] โโโ [email protected] โโโ ์ถฉ์กฑ๋์ง ์์ ์ ํ์ ์ข ์์ฑ [email protected]
ํ์ฌ๋ package.json์ os ๋ฐ arch ํ๋๋ฅผ ์ฌ์ฉํ๋ ์ ํ์ ์ข ์์ฑ์ ๋ํด npm ci๊ฐ ์์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
$ npm init -y; npm i [email protected]; npm ls; npm ci; npm ls
npm i
๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ณ oax์ ๋ํ ๋จ์ผ ์ ํ์ ์ข
์์ฑ์ ์ค์นํ๋ ๊ฒ์ ํ์ธํด์ผํฉ๋๋ค.
๋ํ npm ci
๊ฐ ์๋ชป ์๋ํ๊ณ oax์ ๋ํ ์ ํ์ ์ข
์์ฑ ์ค ๋ ๊ฐ๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ฐ ์ ํ์ ์ข
์์ฑ์ด ์๋ก ๋ค๋ฅธ ์ด์ ์ฒด์ ๋ฐ ์ํคํ
์ฒ๋ฅผ ๋์์ผ๋กํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ์ผ์ด ๋ฐ์ํด์๋ ์๋ฉ๋๋ค. ์ค์น๋ ์ ํ์ ์ข
์์ฑ.
darwin์์ ์คํํ ๋๋ oax-darwin์ ์ค์นํด์ผํ๊ณ , Linux์์ ์คํํ ๋๋ oax-linux๋ฅผ ์ค์นํด์ผํฉ๋๋ค.
๋ค๋ฅธ ๋ฒ์ ์ fsevents์ ์์กดํ๋ ๋ ๊ฐ์ ํจํค์ง๋ฅผ ์ค์นํ ๋ Windows์์ fsevents์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
npm install chokidar --save
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
+ [email protected]
added 14 packages from 17 contributors and audited 19 packages in 1.668s
found 0 vulnerabilities
npm install webpack --save-dev
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\watchpack\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
+ [email protected]
added 327 packages from 195 contributors and audited 4246 packages in 16.581s
์ต์ ์นํฉ์ ์ด์ [email protected] ์ ์์กดํ๋ ์ด์ watchpack ์ ์์กดํฉ๋๋ค .
chokidar ์ต์ ๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง [email protected]
๊ทธ๋ฌ๋ npm ์ค์น๋ OS์ ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ ๋ฒ์ ์ fsevent๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ฑด๋ ๋ฐ์์ต๋๋ค.
ํ๋:
npm ci
npm WARN prepare removing existing node_modules/ before installation
> [email protected] install K:\SWS\test\node_modules\watchpack\node_modules\fsevents
> node-gyp rebuild
K:\SWS\test\node_modules\watchpack\node_modules\fsevents>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
Traceback (most recent call last):
File "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\gyp\gyp_main.py", line 50, in <module>
sys.exit(gyp.script_main())
File "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 554, in script_main
return main(sys.argv[1:])
File "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 547, in main
return gyp_main(args)
File "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\__init__.py", line 532, in gyp_main
generator.GenerateOutput(flat_list, targets, data, params)
File "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 2033, in GenerateOutput
root_entries = _GatherSolutionFolders(
File "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1791, in _GatherSolutionFolders
return _DictsToFolders('', root, flat)
File "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\gyp\pylib\gyp\generator\msvs.py", line 1744, in _DictsToFolders
for folder, contents in bucket.items():
AttributeError: 'MSVSProject' object has no attribute 'items'
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:351:16)
gyp ERR! stack at ChildProcess.emit (events.js:210:5)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Windows_NT 10.0.17134
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd K:\SWS\test\node_modules\watchpack\node_modules\fsevents
gyp ERR! node -v v12.14.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
added 275 packages in 9.344s
๊ทธ๋ฆฌ๊ณ node_modules๋ฅผ ๋ณด๋ฉด fsevents๊ฐ ์๊ณ ์์ด์ผํฉ๋๋ค.
๋ํ npm ci --no-optional
๊ฐ ์๋ํ์ง ์์ต๋๋ค. https://github.com/npm/cli/issues/637 ์๋ณด๊ณ ๋ฉ๋๋ค.
Node 12 LTS ์ค์น๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. npm -v
=> 6.13.4
npm ci --no-optional
์๋ ์ฌ๋ถ๋ ์ถ๊ฐ ์์ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. https://github.com/npm/cli/issues/637#issuecomment -570813804 ์ฐธ์กฐ
๋ฐ๋ผ์ npm ci
์ด ๋ด ํ๊ฒฝ์์ ์คํจํ๋ ๋์ npm ci --no-optional
๋ ์๋ํฉ๋๋ค. ๋ด ํ๊ฒฝ :
์ต์ ๋
ธ๋๋ก ์
๋ฐ์ดํธ ํ ํ npm์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. fsevent ์ธ ๋ชจ๋ ํ๋ก์ ํธ๋ fsevents๋ฅผ ๋น๋ํ๊ธฐ ๋๋ฌธ์ npm ci
๋ก ์ค์นํ์ง ๋ชปํฉ๋๋ค.
์ต์ ๋ ธ๋๋ก ์ ๋ฐ์ดํธ ํ ํ npm์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. fsevent ์ธ ๋ชจ๋ ํ๋ก์ ํธ๋ fsevents๋ฅผ ๋น๋ํ๊ธฐ ๋๋ฌธ์
npm ci
๋ก ์ค์นํ์ง ๋ชปํฉ๋๋ค.* Windows 10 Pro 1909 * node 12.14.1 * npm 6.13.6
@padinko ์ถ๊ฐ
--no-optional
ํ๋๊ทธ (์ :npm ci --no-optional
๋ณํ์ ์๋ ํ์ต๋๊น? ์ฐจ์ด๊ฐ ์์ต๋๊น?
์ต์ ๋ ธ๋๋ก ์ ๋ฐ์ดํธ ํ ํ npm์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. fsevent ์ธ ๋ชจ๋ ํ๋ก์ ํธ๋ fsevents๋ฅผ ๋น๋ํ๊ธฐ ๋๋ฌธ์
npm ci
๋ก ์ค์นํ์ง ๋ชปํฉ๋๋ค.* Windows 10 Pro 1909 * node 12.14.1 * npm 6.13.6
@padinko ์ถ๊ฐ
--no-optional
ํ๋๊ทธ (์ :npm ci --no-optional
๋ณํ์ ์๋ ํ์ต๋๊น? ์ฐจ์ด๊ฐ ์์ต๋๊น?
์ด ํจํค์ง์์ npm ci
์คํจ :
\node_modules\watchpack\node_modules\fsevents
\node_modules\webpack-dev-server\node_modules\fsevents
\node_modules\jest-haste-map\node_modules\fsevents
npm ci --no-optional
์๋ 2 ๊ฐ๋ง ์์ต๋๋ค.
\node_modules\webpack-dev-server\node_modules\fsevents
\node_modules\jest-haste-map\node_modules\fsevents
๊ทธ๋์ ์ฐจ์ด๊ฐ ์์ง๋ง ์ฌ์ ํ fsevents๋ฅผ ์ปดํ์ผํฉ๋๋ค.
@paulmillr @pipobscure ๋ด ๋ฌธ์ (# 658)๋์ด ํฐ์ผ์ ์ค๋ณต์ ๋๋ค. ์ต์ ์ํ๋ก ์ ์งํ๋ ค๋ฉด์ด ํญ๋ชฉ์ ์ถ์ ํ์ญ์์ค.
Ubuntu์์๋์ด ๋ฒ๊ทธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. npm ci
๋ MacOS์๋ง ์ค์นํด์ผํ๋ fsevents
๋ฅผ ์ค์นํฉ๋๋ค.
@mikemimik ๋๋ @isaacs ,์ด ๋ฒ๊ทธ์ ๋ํ ์๊ฒฌ์ด ์์ต๋๊น? ์, fsevents
๋ ์ด๊ฒ์ด ์ด์ ๋ ํฐ ๋ฌธ์ ์ธ ์ด์ ๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ ์ฌ์ ํ NPM์ผ๋ก ์ธํด ๋ฐ์ํ๋ฏ๋ก ์ฌ๊ธฐ์ ํด๊ฒฐํด์ผํฉ๋๋ค.
๊ด๋ จ ๋ณ๊ฒฝ ์ฌํญ์ fsevents๊ฐ ๋ฏธ๋ฆฌ ์ปดํ์ผ ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ ์๋ฆฌ์ ๋น๋ํ๋ ๋์ ๊ฐ์ ธ ์ค๊ธฐ ์ํด node-pre-gyp์ ์ฌ์ฉํ์ฌ ์์ํ์ฌ ๋ชจ๋ ํ๋ซํผ์์ ์ค๋ฅ์์ด ์ข
๋ฃ๋๋ postinstall
์คํฌ๋ฆฝํธ๋ฅผ ์์ฑ ํ ๊ฒ ๊ฐ์ต๋๋ค. npm ci
์ (๋) ํ๋ซํผ ์ง์ ์ฌ๋ถ๋ฅผ ํ์ธํ์ง ์๊ณ ์ ๊ธ ํ์ผ์์๋ ๋ชจ๋ ํญ๋ชฉ์ ๋ ์ด์์ํ๋ ค๊ณ ์๋ํ๊ณ ์ค์น ์คํฌ๋ฆฝํธ๊ฐ ์คํจํ ์ ํ์ dep ๋ง ์ ๊ฑฐํ๋ฏ๋ก์ด dep๋ฅผ ์ค์นํ๊ฒ๋ฉ๋๋ค.
npm v7์๋์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. (์ง๊ธ์ด ์์
์ ์ํ ํ ์ฝ๋์์ ์์
์ค์
๋๋ค.) npm v6์์์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ์ผ๋ง๋ ๊ด์ฌํ๋์ง ํ์ธํ์ง ์์์ง๋ง "์
๊ทธ๋ ์ด๋"๋ก ๋๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. v7๋ก ์์ ". ๊ทธ๋์ ์ํฅ์ด ์๋ค๋ฉด npm ci
๋์ npm install
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์, fsevents
์ ์ ์ ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๊ทธ ๋ฐ๋์
๋๋ค. ๊ทธ๋ค์ ๋ฏธ๋ฆฌ ์ปดํ์ผ ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค. Windows์ ์ค์นํ๋ฉด 404๊ฐ ํ์๋๊ณ ๊ฑด๋ ๋๋๋ค. ์ด์ ๋น๋๋ฅผ ์๋ํ ๋ค์ ๋น๋๋ฅผ ์ค๋จํฉ๋๋ค. ๋น๋๊ฐ ์์๋์ง ์์์ผํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ด๊ณ์์ด : npm ci
์ CI ํ๊ฒฝ ์ฉ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค. ๋์ npm i
๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผํฉ๋๊น? CI์์ ์๊ฒฉํ ํจํค์ง ์ ๊ธ ๊ฒ์ฌ๋ฅผ ์ํฉ๋๋ค.
๋ํ : npm@7
๊ฐ LTS ์ด์ ์ ๋
ธ๋ 14์ ์ฐฉ๋ฅํ ๊น์? LTS ํธ๋์์ 1 ๋
๋์ npm i
๋๋ ๋ฒ์ ์ ๊ธ์ ๊ฐํ ์๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ๋ง์ต๋๊น?
์ ์ ์ ๋ฐ๊ฟ์ ์ฃ์กํฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ ์ฌ์ฉํ๋ S3์ ๋ํ ์ก์ธ์ค ๊ถํ์ ์์๊ณ ์ ์ ๋ ์ฌ๊ฐํ ๋ณด์ ๋ฌธ์ ๊ฐ๋์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ํ์์ ๋ฐ๋ผ ๋ค์ ๊ตฌ์ถํ์ต๋๋ค. ํนํ NAPI ๊ธฐ๋ฐ v2.x๋ ๋ ธ๋ v8.x +์ ๋ํด ์ ํ ๋น๋ ํ ํ์๊ฐ ์์ต๋๋ค.
์ด์ ๋น๋๋ฅผ ์๋ํ ๋ค์ ๋น๋๋ฅผ ์ค๋จํฉ๋๋ค. ๋น๋๊ฐ ์์๋์ง ์์์ผํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ค, ์ด์ํ๋ค์. npm ci
๊ฐ ์ ํ์ dep์ ๋น๋ ์คํจ๋ฅผ ์น๋ช
์ ์ด์ง ์์ ๊ฒฝ๊ณ ์ ํ ์ด๋ฒคํธ๋ก ์ฒ๋ฆฌํ๊ณ ๋ฌธ์ ๊ฐ๋๋ dep๋ฅผ ์ ๊ฑฐ ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๊ด๊ณ์์ด : npm ci๋ CI ํ๊ฒฝ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ ๋์ npm i๋ฅผ ์ฌ์ฉํด์ผํฉ๋๊น? CI์์ ์๊ฒฉํ ํจํค์ง ์ ๊ธ ๊ฒ์ฌ๋ฅผ ์ํฉ๋๋ค.
์ข์ ์ง๋ฌธ.
"CI ํ๊ฒฝ ์ฉ์ผ๋ก ์ค๊ณ๋จ"์ด ํญ์ "์ด ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด์ด ํน์ CI ํ๊ฒฝ์ ๊ฐ์ฅ ์ ํฉ ํจ"์ ์๋ฏธํ์ง๋ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ npm ci๊ฐ ์คํ๋๋ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ทธ๋์, ๋น์ ์ ์ฌ์ฉํด์ผ npm i
๋ณด๋ค๋ npm ci
์๋ํ๊ธฐ ๋๋ฌธ์, ํผ๋ฅผ ๋ชจ๋ ๋ฒ๊ทธ.
CI์์ ์๊ฒฉํ ํจํค์ง ์ ๊ธ ๊ฒ์ฌ๋ฅผ ์ํฉ๋๋ค.
ํจํค์ง ์ ๊ธ์ด ์ ๋ขฐํ ์์๋ ๋ฌด๊ฒฐ์ฑ ๋ฐ ํด๊ฒฐ ๊ฒ์ฌ๋ฅผ ์ ๊ณตํ๋ค๋ ์ฌ์ค์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๋ฉด ์ข์ ์์์ด ์์ต๋๋ค. npm install
๋ ๊ทธ๋ ๊ฒํฉ๋๋ค.
package-lock ๋ฐ package.json์ด ์๋ก ๋๊ธฐํ๋์ด ์๋์ง ํ์ธํ๋ ๊ฒฝ์ฐ package.json์ "scripts": { "prepare": "npx lock-verify" }
๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
npm @ 7 ์ด LTS๊ฐ๋๊ธฐ ์ ์ ๋ ธ๋ 14์ ๋์ฐฉํ ๊น์?
๊ทธ๊ฒ์ด ์ ๊ธฐ๋์ ๋๋ค.
๊ทธ๋ฌ๋ LTS ์ธ ๊ฒฝ์ฐ์๋ LTS ๋ฒ์ ์ ๋ ธ๋์์ LTS ๋ฒ์ ์ npm์ ์ฌ์ฉํ๋ ๊ฒ์ด LTS "๊ณ ์ ๋"์๊ฐ ๋ฒ์ ๋ด์์ ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋๋ผ๋ ๊ณผ๊ฑฐ์ ์ ๊ทผ ๋ฐฉ์์ npm v6์ 4 ๊ฐ๋ก ์ ๊ณตํฉ๋๋ค. ๋ช ๋ ์ Node๊ฐ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์๋ ๋งค์ฐ ๋์ ์๊ฐ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ npm์ ๋ฐํ์์ ์ํฅ์์ฃผ๋ ๋ฐฉ์์ "์ข ์์ฑ"์ด ์๋๋ผ ์ค์ ๋ก๋ ๋ณ๋์ ํ๋ก์ ํธ์ด๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ๊ด์ฐฎ์ต๋๋ค.
npm v7์๋ ๋ช ๊ฐ์ง ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด์์ ๊ฒ์ด๋ฏ๋ก (๊ฐ๋ฅํ ํ ์ต์ํํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ง๋ง) ์ ์๊ฐ์ ๊ฐ์ ธ ์ค์ง ๋ชปํ๋ฉด ๋ฌธ์ ๊ฐ ๋ ์ ์๊ฑฐ๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ค์ ํ๊ธฐ ์ํด ์ฝ๊ฐ์ ์๋ณด๋ฅผ ํ ์ ์์ต๋๋ค. ๋ ธ๋ 14 LTS์ ํจ๊ป ์ ๊ณต๋๋ npm v7์ด npm v6์ ์ต๋ํ ๊ฐ๊น๋๋ก ๋ค๋ฅธ ์์ ์ ์ํํ์ญ์์ค.
์, ๋ฐฉ๊ธ ๋ ธ๋ ์ผ์ ์ ํ์ธํ ๊ฒฐ๊ณผ ์๊ฐ์ด ํ์ต๋๋ค . Node 14์ _initial_ ๋ฆด๋ฆฌ์ค๋ 3 ๊ฐ์ ๋ด์ ์์ง๋ง 10 ์๊น์ง LTS๋ก ์ ํ๋์ง ์์ต๋๋ค.
๊ทธ๋ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ช ํํด์ผํฉ๋๋ค. npm v7์ ์ด๊ธฐ ๋ฆด๋ฆฌ์ค๋ ๋ ธ๋ 14์ ๋ง์ถฐ ์ฌ์ฉํ ์ ์๊ณ v14๊ฐ LTS์ ๋๋ฌ ํ ๋๊น์ง ์ถฉ๋ถํ ์์ ์ ์ผ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. (์ ๋ช ํ ๋ง์ง๋ง ๋ง๊ณผ ๋ชจ๋ ๊ฒ์ด์ง๋ง ํตํฉ์ ๊ฐ๊น์์ง์ ๋ฐ๋ผ ์์ ๊ฐ์ด ๊พธ์คํ ๋์์ง๊ณ ์์ผ๋ฉฐ ๊ณง ๋ฐ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ ์ด์ ๊ฐ ์์ต๋๋ค.)
๋๋ ์ด๊ฒ์ด ๋ฒ๊ทธ๋ณด๋ค ๋ ์ค์ํ ๊ฒ์ผ๋ก ์ทจ๊ธ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋์ต๋๋ค. ์ด๊ฒ์ Windows์ ๋น๋ ์๋ฒ์์ "npm ci"๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ํฐ ๋ฌธ์ ์ ๋๋ค.
Windows๋ฟ๋ง ์๋๋ผ ์ด๋ค ์์คํ ์์๋ npm ci๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํจํค์ง ์ ๊ธ์ด ๊ถ์์๋ ๋ฌด๊ฒฐ์ฑ ๋ฐ ํด์๋ ๊ฒ์ฌ๋ฅผ ์ ๊ณตํ๋ค๋ ์ฌ์ค์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๋ฉด ์ข์ ์์์ด ์์ต๋๋ค.
npm install
๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ ๊น๋ง ์ .. package.json ํ์ผ์ ์ค์ ๋ ๊ท์น์ ๊ณ์ ์ค์ํ๋ ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์์๋ ๊ฒฝ์ฐ npm install
๊ฐ ์ ์ฌ์ ์ผ๋ก package-lock.json ํ์ผ์ ์
๋ฐ์ดํธํ๋ ๊ฒ์ ์ ๊ฒฝํ์ด์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ด @isaacs๋ฅผ ๋ณ๊ฒฝ
@tommck ๋๋
package-lock ๋ฐ package.json์ด ์๋ก ๋๊ธฐํ๋์ด ์๋์ง ํ์ธํ๋ ๊ฒฝ์ฐ package.json์
"scripts": { "prepare": "npx lock-verify" }
์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
CI ํ๊ฒฝ์์ npm ci
์ ๊ฐ๋ํ ์ฌ๋์ ๊ตฌํ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํ์ญ์์ค. npm install
. ํจํค์ง ์ ๊ธ์ด ์ฌ์ ํ package.json๊ณผ ๋๊ธฐํ๋์ด ์๋์ง ํ์ธํ๋ ์ค๋น ์คํฌ๋ฆฝํธ๋ฅผ ์คํํฉ๋๋ค.
๋ด๊ฐ ์ฐฉ๊ฐํ์ง ์์ผ๋ฉด ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ทธ๋ ์ต๋๋ค. ์ด๊ฒ์ ํฐ ๋ฌธ์ ์ ๋๋ค. ์ด ์ข๊ฒ๋ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์๋ Linux๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น๋ํ๊ณ ํจํค์ง ์กฐํฉ์์ ์ฌ์ ํ ์๋ํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด์ด ์ข์ง ์์ต๋๋ค.
@coyoteecd ๊ทธ๋์ ... ์ ๊ธ ํ์ผ์ด
"npm install"์ ์คํํ๋ฉด ์ฌ์ ํ ์ ์ข ์์ฑ์ผ๋ก ํจํค์ง ์ ๊ธ ํ์ผ์ ์์ ํ ์ ์์ต๋๊น?
ํ ๋ ธ์ต๋๋ค. ๊ทธ๋ ๊ฒํ์ง ์์ต๋๋ค.
์ธ์์์ด npm install
๋ฅผ ์คํํ๋ฉด ์ ๊ธ ํ์ผ์์๋ ๊ฒ๊ณผ ๋ค๋ฅธ ์ข
์์ฑ์ด ์ถ๊ฐ๋์ง ์์ต๋๋ค.
npm install
์ด (๊ฐ) npm ci
๊ฐ _ํ์ง _ ์๋ _ํ๋ ์ผ์ node_modules
์๊ณ ์ด๋ฏธ ์ ๊ธ ํ์ผ์์๋ ๊ฒ๊ณผ ์ผ์นํ๋ ์ข
์์ฑ์ _skip_ ๋ค์ด๋ก๋ํ๋ ๊ฒ์
๋๋ค.
์ ๊น๋ง ์ .. npm ์ค์น๋ก ์ธํด package.json ํ์ผ์ ์ค์ ๋ ๊ท์น์ ๊ณ์ ์ค์ํ๋ ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์์๋ ๊ฒฝ์ฐ ์ ์ฌ์ ์ผ๋ก package-lock.json ํ์ผ์ด ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ ๋ด ๊ฒฝํ์ด์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ด @isaacs๋ฅผ ๋ณ๊ฒฝ
๋๋ ๊ทธ๊ฒ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ฅผ๋ณด๊ณ ์ถ๋ค. ์ ๊ธ ํ์ผ์ ์กด์คํ์ง ๋ง๋ผ๊ณ ๋ช
์ ์ ์ผ๋ก ์ง์ํ๊ฑฐ๋ npm update
๋ฅผ ์คํํ๊ฑฐ๋ ์ ๊ธ ํ์ผ์ด ์ ํจํ์ง ์์ ๊ฒฝ์ฐ (์ฆ, deps๊ฐ ์ ์ํ ํธ๋ฆฌ์์ ์ข
์์ฑ์ ์ถฉ์กฑํ์ง ์์) ์ ๊ธ ํ์ผ์ npm install
npm v5์ ๋์
๋ ์ดํ๋ก ๊ณ์๋ฉ๋๋ค.
full-icu
ํจํค์ง๋ ๊ฐ๋ ์ ๊ธ ํ์ผ์ ๋ณ๊ฒฝํ๋ ํจํค์ง์
๋๋ค.ํ์ง๋ง npm์ด ์๋ ๊ทธ๋ค์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ด ๊ฒฝํ : ๋ ธ๋ v12๊ฐ ์๊ณ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ v10, ๋ ธ๋ v10์ ๋ํ ์ ์ฒด icu ๋ค์ด ๊ทธ๋ ์ด๋ icu ๋ฐ์ดํฐ ํจํค์ง๊ฐ์์ ๋ ..
๋ชจ๋ ๊ฒ์ ์ ๊ทธ๊ณ node_modules
๋๋ ํฐ๋ฆฌ๊ฐ์๋ ์ํ์์ npm i
๋ฅผ ์คํํ๋ฉด ์ ๊ธ ํ์ผ์์ icu ๋ฐ์ดํฐ๊ฐ ์ ๊ฑฐ๋๋ฏ๋ก npm i
๋ ๋ฒ ์คํํ์ฌ ๋ค์ ์ถ๊ฐํด์ผํฉ๋๋ค.
์ด ๋ ๊ฐ์ง ๋ฌธ์ ๋๋ฌธ์ npm ci๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
fsevents
๋ก ์ธํด ์ฌ๊ธฐ์ ๋์ฐฉํ ๋ค๋ฅธ ์ฌ๋์ ๊ฒฝ์ฐ ํด๋น ๋ฌธ์ ์ npm ci
์๋ฃจ์
์
๋๋ค.
https://github.com/fsevents/fsevents/issues/301#issuecomment -572607085
@jayoungers FWIW, ๊ทธ ์๋ฃจ์
์ ๋๋ฅผ ์ํด ์๋ํ์ง ์์์ต๋๋ค. ์ด๋ป๊ฒ ๋ ๋ค๋ฅธ ๋ฒ์ ์ fsevents๊ฐ ์ฌ์ ํ npm ci
๋น๋๋๊ณ ์์ต๋๋ค. ๋์ npm i
๋ฅผ ์ฌ์ฉํ๋๋ก ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝํด์ผํ์ต๋๋ค.
์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ๋ํ์ด ๋ฒ๊ทธ์ ์ํฅ์๋ฐ์ต๋๋ค.
์ด๊ฒ์ด ๋์์ด๋๋์ง ํ์คํ์ง ์์ง๋ง Linux์์ package-lock.json
๊ฐ ์ด๋ฏธ ์์ฑ ๋ ํจํค์ง (์ ๊ฒฝ์ฐ์๋ WSL)์์ npm install
๋ฅผ ์คํํ ๋์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. package-lock.json
์ญ์ ํ๊ณ Windows์์ npm install
์ ๋ค์ ์คํ ํ ํ ๊ด์ฐฎ ์์ต๋๋ค.
Serverless Pro CI๊ฐ npm ์ค์น์์ npm ci๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ์ด ๋ฌธ์ ๋ ๋ฐ์ํ์ฌ ๋น๋๊ฐ ์ค๋จ๋ฉ๋๋ค.
Windows ์์คํ
์์ ์ปค๋ฐํ๊ณ ์์ต๋๋ค.
build step: npm ci
> [email protected] postinstall /nuxt-serverless/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
> [email protected] postinstall /nuxt-serverless/node_modules/ejs
> node ./postinstall.js
> [email protected] install /nuxt-serverless/node_modules/watchpack/node_modules/fsevents
> node-gyp rebuild
gyp
ERR! build error
gyp
ERR! stack Error: not found: make
gyp ERR! stack at getNotFoundError (/root/.nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/which/which.js:13:12)
gyp
ERR! stack at F (/root/.nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/which/which.js:68:19)
gyp ERR! stack
at E (/root/.nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/which/which.js:80:29)
gyp ERR! stack at /root/.nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/which/which.js:89:16
gyp ERR!
stack at /root/.nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/isexe/index.js:42:5
gyp ERR! stack at /root/.nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/isexe/mode.js:8:5
gyp
ERR! stack at FSReqWrap.oncomplete (fs.js:154:21)
gyp ERR!
System Linux 4.14.171-105.231.amzn1.x86_64
gyp ERR! command "/root/.nvm/versions/node/v10.13.0/bin/node" "/root/.nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /nuxt-serverless/node_modules/watchpack/node_modules/fsevents
gyp ERR!
node -v v10.13.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
npm install --no-optional
์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์๋ํ์ง ์์ต๋๋ค.
์๊ฐ์ package-lock.json
์์ ์ ํ ์ฌํญ์ผ๋ก ํ์๋ฉ๋๋ค.
"moment": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
"dev": true,
"optional": true
}
node_modules npm i
์์ ์๊ฐ์ ์ ๊ฑฐํ๋ฉด ๋ค์ ๋ฃ์ต๋๋ค.
rm -rf node_modules/moment
npm install --no-optional
ls node_modules | grep moment
moment
@Elijen ๋๋ ์ด๊ฒ์ด ํจํค์ง์ OS ๋์์ธ์ด ์ค๋ ๋์ ๋์ผํ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ฌธ์ ๊ฐ์๋ ๊ฒฝ์ฐ ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ ์ถํ ์ ์์ต๋๋ค.
์, ๊ทธ๋ฐ๋ฐ fsevents
๋ 5 ์ 5 ์ผ ์ดํ๋ก ๋ ์ด์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
https://github.com/fsevents/fsevents/issues/301
@isaacs ์ด ๋
์ด npm@7
์์์ต๋๊น?
@paulirwin ์๋ง๋ ๋น์ ์ด ์ณ์ต๋๋ค. ๋ด๊ฐ ์ธ๊ธ ํ ๋ฌธ์ ์ ๋ํด ์์ฑ๋ ์ฌ๋ฌ ๋ฌธ์ ์ ํฌ๋ผ ๊ฒ์๋ฌผ์ ๋ณด์๊ณ ์ด ๋ฌธ์ ๋ก ์ธํ ๋ค์ด ์คํธ๋ฆผ ๋ฌธ์ ๋ผ๊ณ ๊ฐ์ ํ์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ๋ฅผ๋ณด๊ณ ์ถ๋ค. ์ ๊ธ ํ์ผ์ ์กด์คํ์ง ๋ง๋ผ๊ณ ๋ช ์ ์ ์ผ๋ก ์ง์ํ๊ฑฐ๋
npm update
๋ฅผ ์คํํ๊ฑฐ๋ ์ ๊ธ ํ์ผ์ด ์ ํจํ์ง ์์ ๊ฒฝ์ฐ (์ฆ, deps๊ฐ ์ ์ํ ํธ๋ฆฌ์์ ์ข ์์ฑ์ ์ถฉ์กฑํ์ง ์์) ์ ๊ธ ํ์ผ์npm install
npm v5์ ๋์ ๋ ์ดํ๋ก ๊ณ์๋ฉ๋๋ค.
ํจํค์ง ๋ฒ์ ์ด ํ๊ทธ๋ก ์ง์ ๋ ๋ v6.14.8์์ ์ ํจํ ์ ๊ธ ํ์ผ๋ก npm install
์
๋ฐ์ดํธ ์ข
์์ฑ์ ๋ณด์์ต๋๋ค. # 2167๋ก ๊ธฐ๋ก๋์์ต๋๋ค.
์ข์ ์์์ v7.0.10์์๋ ๋ฐ์ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. : +1 :
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์ด๊ฒ์ด ๋ฒ๊ทธ๋ณด๋ค ๋ ์ค์ํ ๊ฒ์ผ๋ก ์ทจ๊ธ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋์ต๋๋ค. ์ด๊ฒ์ Windows์ ๋น๋ ์๋ฒ์์ "npm ci"๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ํฐ ๋ฌธ์ ์ ๋๋ค.