Jsdom: "์˜์กด์„ฑ ์š”์ฒญ์€ ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค" (Webpack๊ณผ ๋ฒˆ๋“ค๋ง ์‹œ)

์— ๋งŒ๋“  2017๋…„ 11์›” 24์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jsdom/jsdom

๊ธฐ๋ณธ ์ •๋ณด:

  • Node.js ๋ฒ„์ „: 8.9.1
  • jsdom ๋ฒ„์ „: 11.4.0

๋‚ด๋ถ€์ ์œผ๋กœ JSDOM์„ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์›น ํŒฉ๊ณผ ๋ฒˆ๋“ค๋กœ ๋ฌถ์„ ๋•Œ ๋‹ค์Œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

WARNING in .../node_modules/jsdom/lib/jsdom/utils.js
    203:21-40 Critical dependency: the request of a dependency is an expression

๋ฌธ์ œ์˜ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

["canvas", "canvas-prebuilt"].some(moduleName => {
  try {
    exports.Canvas = require(moduleName);

์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ๋ฒˆ๋“ค๋กœ ๋ฌถ๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ 266MB( src/ ๋ฐ node_modules/ )์—์„œ ๋‹จ์ผ 6MB JS ํŒŒ์ผ(์ œ ๊ฒฝ์šฐ)๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ•ญ์ƒ ์ •์ ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์‹ค์ œ๋กœ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ์ด ์ถ”๋ก ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์—†๋Š” ๋ฒˆ๋“ค๋Ÿฌ์˜ ๊ฒฐํ•จ์œผ๋กœ ์ด๊ฒƒ์„ ๋ณด์‹ญ๋‹ˆ๊นŒ?

(๋ฆฌํ„ฐ๋Ÿด require ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ if ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ canvas ๋˜๋Š” canvas-prebuilt ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ์˜ˆ์™ธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. , ๊ทธ๋Ÿฌ๋‚˜ ์ ์–ด๋„ ๋ฌธ์ œ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์—…๋ฐ์ดํŠธ! :๋“ค์–ด๊ฐ„ ์†:

์ˆ˜์ •์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉฐ mocha-webpack ๋ฌธ์ œ์—์„œ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค: https://github.com/zinserjan/mocha-webpack/issues/6#issuecomment -213957809. ๋˜ํ•œ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š” https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

const nodeExternals = require('webpack-node-externals');

module.exports = {
  externals: [nodeExternals()],
  // etc configs here
}

๋ชจ๋“  5 ๋Œ“๊ธ€

์•„๋‹ˆ์š”, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์›นํŒฉ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@domenic ์›นํŒฉ์ด ์ง€์›๋˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ง€๊ธˆ๊นŒ์ง€ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ฒˆ๋“ค๋Ÿฌ์ž…๋‹ˆ๋‹ค.

jsdom์ด ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ํŒจํ„ด์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@domenic ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ฝ”๋“œ ํŒจํ„ด์ž…๋‹ˆ๊นŒ? webpack์€ ์š”์ฆ˜ ํ•ญ์ƒ ๋งŽ์€ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ webpack๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. :NS

๋‚˜๋Š” ์ด๋ฏธ webpack๊ณผ ํ•จ๊ป˜ jsdom์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ตœ์†Œํ•œ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์„œ/dom ๋ฉ”์†Œ๋“œ๋Š” ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๊ฒฝ๊ณ  ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” mocha-webpack ๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ์–ต์ œํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์—์„œ์•ผ ๊ทธ๊ฒƒ์„ ์•Œ์•„์ฐจ๋ ธ๊ณ , ๊ทธ๊ฒƒ์„ ๋˜์ง„ ํ›„์— ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ mocha-webpack์ด ์•„๋ฌด ๊ฒƒ๋„ ์–ต์ œํ•˜์ง€ ์•Š๊ณ  ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ˜„๋ช…ํ•œ ์ผ์„ ํ•˜๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์šฐ๋ฆฌ๋Š” ๊ทธ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ! :๋“ค์–ด๊ฐ„ ์†:

์ˆ˜์ •์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋ฉฐ mocha-webpack ๋ฌธ์ œ์—์„œ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค: https://github.com/zinserjan/mocha-webpack/issues/6#issuecomment -213957809. ๋˜ํ•œ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š” https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

const nodeExternals = require('webpack-node-externals');

module.exports = {
  externals: [nodeExternals()],
  // etc configs here
}
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰