Handlebars.js: ์›นํŒฉ ๊ฒฝ๊ณ ์™€ ํ•จ๊ป˜ ํ•ธ๋“ค๋ฐ” ์‚ฌ์šฉ require.extensions ์ง€์›๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2015๋…„ 02์›” 04์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: handlebars-lang/handlebars.js

Webpack์œผ๋กœ ํ•ธ๋“ค๋ฐ”๋ฅผ ๋กœ๋“œํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

./~/handlebars/lib/index.js์˜ ๊ฒฝ๊ณ 
require.extensions๋Š” ์›นํŒฉ์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

./~/handlebars/lib/index.js์˜ ๊ฒฝ๊ณ 
require.extensions๋Š” ์›นํŒฉ์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

./~/handlebars/lib/index.js์˜ ๊ฒฝ๊ณ 
require.extensions๋Š” ์›นํŒฉ์—์„œ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

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

@kpdecker @seeliang : ์•จ๋ฆฌ์–ด์‹ฑ ํ•ธ๋“ค๋ฐ”๊ฐ€ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

 resolve:
  {
    alias: {
      'handlebars' : 'handlebars/dist/handlebars.js'
    }
  },

@kpdecker ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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

handlebars-loader์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜๊ณ  handlebars/runtime ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด ๋…ธ๋“œ๋ณ„ ์ฝ”๋“œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— bower๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ์ธก ๋นŒ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

handlebars-loader์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜๊ณ  handlebars/runtime ๋ชจ๋“ˆ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@kpdecker ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”? ์ €๋Š” ํ•ธ๋“ค๋ฐ” 1.3.0๊ณผ ํ•ธ๋“ค๋ฐ”-๋กœ๋” ^1.0.2๋ฅผ ๋ชจ๋‘ ์„ค์น˜ํ–ˆ์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ AMD ๋ชจ๋“ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

define([
  'hbs!path/to/template' // path/to/template.hbs
],
function(template) {
  // ...
});

๊ทธ๋ฆฌ๊ณ  webpack ๊ตฌ์„ฑ์—๋Š” ๋‹ค์Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

{
  resolveLoader: {
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'hbs': 'handlebars-loader'
    }
  },
}

hbs! ๊ฐ€ ํ•ธ๋“ค๋ฐ” ๋กœ๋”์— ๋งคํ•‘๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ webpack์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์นœ์ˆ™ํ•œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

WARNING in /some/absolute/path/~/handlebars/lib/index.js
require.extensions is not supported by webpack. Use a loader instead.

๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? handlebars/runtime ๋กœ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ข‹์Šต๋‹ˆ๋‹ค. ํ•ธ๋“ค๋ฐ”์— ๋ณ„์นญ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ์ œ๊ฑฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
  resolve: {
    modulesDirectories: ['node_modules', 'src'],
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'handlebars': 'handlebars/runtime.js'
    }
  },
  resolveLoader: {
    fallback: path.join(__dirname, 'node_modules'),
    alias: {
      'hbs': 'handlebars-loader'
    }
  }
}

๊ทธ๊ฒƒ์€ ์†์ž„์ˆ˜์ธ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์–ด๋–ค ๊ฒƒ์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ์•Œ์•„๋‚ด์•ผ ํ•  ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, @kpdecker ์ž…๋‹ˆ๋‹ค .

์˜๊ฒฌ์„ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์€ ์ผ์ข…์˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. @trusktr ์˜ "resolve" ์„น์…˜('handlebars/runtime.js')์„ ์ถ”๊ฐ€ํ•˜๋ฉด webpack์„ ์‹คํ–‰ํ•˜๊ณ  "Handlebars.compile์€ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋†“์นœ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋งŽ์€ ๊ฐ์‚ฌ

๋Ÿฐํƒ€์ž„์—๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋ฒ” ์‚ฌ๋ก€์ธ ํ…œํ”Œ๋ฆฟ์„ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ ํ…œํ”Œ๋ฆฟ์„ ์ปดํŒŒ์ผํ•ด์•ผ ํ•˜๊ณ  ๋น„์šฉ(์‹œ์ž‘ ๋ฐ ํŒŒ์ผ ํฌ๊ธฐ)์— ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด handlebars/dist/handlebars.js ์™€ ๊ฐ™์ด ํ•ธ๋“ค๋ฐ”์˜ ๋ณ„์นญ์„ ์ง€์ •ํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@kpdecker ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ ํ•  ๊ฒƒ์ด๋‹ค

๋‚˜๋Š” ๋˜ํ•œ ์ „์ฒด ๋Ÿฐํƒ€์ž„์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ด๊ฒƒ์ด ๋” ๊น”๋”ํ•ด์งˆ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด #1102๋ฅผ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.

@kpdecker @seeliang : ์•จ๋ฆฌ์–ด์‹ฑ ํ•ธ๋“ค๋ฐ”๊ฐ€ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•Œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

 resolve:
  {
    alias: {
      'handlebars' : 'handlebars/dist/handlebars.js'
    }
  },

@kpdecker ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋ฅผ ์ฐพ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ฐพ์€ ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค
https://github.com/valtech-nyc/brookjs/blob/master/packages/brookjs/webpack.config.js#L39 -L43
์—ฌ๊ธฐ https://github.com/pcardune/handlebars-loader/issues/110#issuecomment -358681867

@mAAdhaTTah ๋•๋ถ„์—

์ƒํ–ฅ:

//fix handlebars warnings
config.resolve.alias = {
    ...config.resolve.alias,
    'handlebars/runtime': 'handlebars/dist/cjs/handlebars.runtime',
    'handlebars': 'handlebars/dist/cjs/handlebars.runtime',
};
const nodeExternals = require('webpack-node-externals');
module.exports = {
  externals: [nodeExternals()]
}

๋˜ํ•œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰