Handlebars.js: webpack + ํ•ธ๋“ค๋ฐ” ํ•„์š” ์˜ค๋ฅ˜

์— ๋งŒ๋“  2016๋…„ 01์›” 26์ผ  ยท  21์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: handlebars-lang/handlebars.js

require ํ•ธ๋“ค๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

โ–ถ webpack --display-modules   
Hash: bdb0fe35e2f8bde783e5
Version: webpack 1.12.12
Time: 116ms
         Asset     Size  Chunks             Chunk Names
bundle.main.js  2.82 kB       0  [emitted]  main
   [0] ./src/index.js 150 bytes {0} [built]
   [1] ./~/handlebars/lib/index.js 792 bytes {0} [built] [3 warnings] [3 errors]

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

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

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

ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve 'file' or 'directory' ../dist/cjs/handlebars/compiler/printer in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
 @ ./~/handlebars/lib/index.js 9:14-64

ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve module 'fs' in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
 @ ./~/handlebars/lib/index.js 17:11-24

ERROR in ./~/handlebars/lib/index.js
Module not found: Error: Cannot resolve 'file' or 'directory' ../dist/cjs/handlebars in /home/abhisekp/MyProjects/JSApps/MadeWithLove-Webpack/node_modules/handlebars/lib
 @ ./~/handlebars/lib/index.js 7:17-50 

๋‚ด index.js

var handlebars = require('handlebars');

๋‚ด package.json

  "dependencies": {
    "handlebars": "^4.0.5"
  }

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

๋‚˜๋Š” ์ด๊ฒƒ์„ ..

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

๋‚ด ์›นํŒฉ ๊ตฌ์„ฑ์—์„œ

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

# 1102์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋ผ์ธ ์ถ”๊ฐ€
"browser": "dist/handlebars.js",
ํ•ธ๋“ค๋ฐ”์˜ package.json์ด ๋‚˜๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ธ๋“ค๋ฐ”๊ฐ€ ์•„๋‹ˆ๋ผ Webpack์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ๋…ธ๋“œ ๋ชจ๋“ˆ ์ฝ”์–ด ํŒŒ์ผ์˜ ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” /node_modules/module_name/dist์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋…ธ๋“œ ์•ฑ์ด ์œ„์น˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Webpack์ด require()๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ..

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

๋‚ด ์›นํŒฉ ๊ตฌ์„ฑ์—์„œ

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @gilesbradshaw :+1: :์Šค๋งˆ์ผ:

@abhisekp ํ•ด๊ฒฐ๋˜์—ˆ๋‚˜์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ซ์œผ์‹ญ์‹œ์˜ค.

@rafde ํ™•์ธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋ช…ํ™•ํ•ด์ง€๊ณ  ๋ช…ํ™•ํ•œ ์†”๋ฃจ์…˜์ด ์ œ์•ˆ๋˜๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์•Œ๋ฆผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :๋ถ‰ํžˆ๋‹ค:

.js์˜ ์–ด๋”˜๊ฐ€์— ํ•ธ๋“ค๋ฐ”๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žฌํ˜„๋ฉ๋‹ˆ๋‹ค.

var Handlebars = require('handlebars');
Handlebars.registerHelper('greet', function(name) {
            return 'Hello, name=' + name + '!';
});

ํ•˜์ง€๋งŒ ์ด ์ค„์„ ์ œ๊ฑฐํ•˜๋ฉด

var Handlebars = require('handlebars');

๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค

@gilesbradshaw
๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

Angular 2 CLI ํ”„๋กœ์ ํŠธ์—์„œ ํ•ธ๋“ค๋ฐ”๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋„ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Angular CLI ํŒ€์ด Angular CLI ์‚ฌ์šฉ์ž์—๊ฒŒ ์›นํŒฉ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ˆจ๊ธฐ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ณ  ๊ณต์‹์ ์œผ๋กœ ์›นํŒฉ ๊ตฌ์„ฑ ์ˆ˜์ •์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์›นํŒฉ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@oocx ๋‹ค์Œ ๊ณผ ๊ฐ™์ด node_modules ํด๋”์—์„œ JS ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import 'handlebars/dist/handlebars.min.js';

์ด๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

์ด๊ฒƒ์„ Angular 4 ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘๋™์‹œํ‚ค๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
* 'handlebars/dist/handlebars'์—์„œ handleBars๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ;

์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค :
import * 'handlebars'์—์„œ handleBars๋กœ;

์œ„์˜ ์ค„์€ node์˜ typescript ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ angular 4์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HandleBars๋Š” ์ด๋ ‡๊ฒŒ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ์œ ์ผํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊นŒ๋ด ๊ฑฑ์ •์ด ๋ฉ๋‹ˆ๋‹ค. HandleBars๊ฐ€ Angular์˜ ์›นํŒฉ์—์„œ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์–ธ์ œ"์— ๋Œ€ํ•œ ์•ฝ์†์€ ์—†์ง€๋งŒ...

@swilliams-a3digital Could not find a declaration file for module ์„ ์–ธ ๋ชจ๋“ˆ 'handlebars'๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ @types/handlebars๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜์…จ๋‚˜์š”?

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

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ฐพ์€ ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค
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',
};

์ด๊ฒƒ์€ ์ง€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด handlebars ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ–ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋ฌด์‹œํ•˜๊ณ  ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์„ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

import Handlebars from 'handlebars'

์™€ ํ•จ๊ป˜:

import Handlebars from 'handlebars/dist/cjs/handlebars'

@catamphetamine ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๋‹ค๋ฉด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด ๊ฒƒ๋„ ๊นจ์ง€์ง€ ์•Š๋Š” ํ•œ ์ƒˆ ๋ฒ„์ „์„ ๋ณ‘ํ•ฉํ•˜์—ฌ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. NodeJS์˜ const Handlebars = require('handlebars') ๋ฐ ์ด์ „ ๋ฒ„์ „์˜ webpack์ด ์žˆ๋Š” ๊ธฐ์กด ์„ค์ •์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋“ค์€ ๋ฌด์‹œํ•˜๊ณ  ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค"์— ๋Œ€ํ•ด:

ํ•ธ๋“ค๋ฐ”์˜ ๋ฌธ์ œ๋Š” ํ˜‘๋ ฅ์ž๊ฐ€ ๋งŽ์ง€ ์•Š๊ณ  ํ˜„์žฌ ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ํ•œ ์œ ์ผํ•˜๊ฒŒ ํ™œ๋™์ ์ธ ์‚ฌ๋žŒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์Œ, ๋‹ค์†Œ ํ™œ๋™์ ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ 23์‹œ 26๋ถ„์ด๊ณ  ๊ฐ€์กฑ์ด ์ฃผ๊ฐ„์— ํ•˜๋Š” ์ผ๊ณผ ๋‹ค๋ฅธ ์ทจ๋ฏธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋Ÿฌ ์˜ค๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ "๊ทธ๋ž˜๋„ ๊ทธ๋“ค์€ ๋ฌด์‹œํ•˜๊ณ  ๋ฌด์‹œํ•œ๋‹ค"๋ผ๊ณ  ์“ธ ๋•Œ "๊ทธ๋“ค"์€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์—์„œ ์ผํ•˜๊ธฐ ์œ„ํ•ด ๋ˆ์„ ๋ฐ›๋Š” "๊ทธ๋“ค"์€ ๊ฑฐ์˜ ํ™•์‹คํžˆ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค๊ณผ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์žฌ๋ฏธ์žˆ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์žฌ๋ฏธ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์„ ๋•์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‘ ๊ฐœ์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ง์ ‘ ํ•ธ๋“ค๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋ฆฌ๊ณ  ๋•Œ๋•Œ๋กœ ๋ฌด๋Œ€ ์กฐ๋ช…์— ์„œ ์žˆ๋Š” ๊ฒƒ์ด ๊ธฐ๋ถ„์ด ์ข‹๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋‚ด ์˜๋ฌด ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋ฌธ์ œ, ์ฃผ๋กœ ๋น ๋ฅด๊ณ  ๋ช…ํ™•ํ•œ ๋ฌธ์ œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•ธ๋“ค๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ์•„๋ฌด๋„ ํ•ด๊ฒฐํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์Šค์Šค๋กœ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ค์‹œ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋”ฐ๊ธˆ ๋ฌด๋Œ€ ์กฐ๋ช…์— ์„œ ์žˆ์œผ๋ฉด ๊ธฐ๋ถ„์ด ์ข‹๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒํผ ์ธ๊ธฐ๊ฐ€ ์—†์ง€๋งŒ ์žฌ๋ฏธ๋ฅผ ์œ„ํ•ด ์˜คํ”ˆ ์†Œ์Šค๋„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‚ด ์ด๋ ฅ์„œ์— ํ•œ๋‘ ์ค„ ์ •๋„. ๋” ๋‚˜์€ ์ง์—…์„ ์–ป๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.
@nknapp/handlebars.js์™€ ๊ฐ™์ด ๊ธฐ์ˆ ์ ์œผ๋กœ ๊ท€ํ•˜์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๋ฏธ๋ณด๋‹ค๋Š” ๋งŽ์€ ์ด์ต์„ ์–ป์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜๊ณ  @wycats ๋Š” URL ํ‘œ์‹œ์ค„์ด ๊ฐ€๋Š” ํ•œ ๋ชจ๋“  ํฌ๋ ˆ๋”ง๊ณผ github ๋ณ„์„ ์–ป์Šต๋‹ˆ๋‹ค.
์ข‹์•„, ์ ์–ด๋„ ์ด์ œ ์šฐ๋ฆฌ๋Š” ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋” ์ด์ƒ ํ™œ๋ฐœํ•˜๊ฒŒ ์œ ์ง€๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜๋„ ๋งŽ์€ ๊ณณ(๋ ˆ๊ฑฐ์‹œ ํฌํ•จ)์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด SendGrid๋Š” ์ตœ๊ทผ ์ด handlebars ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "๋งž์ถคํ˜• ํ…œํ”Œ๋ฆฟ"์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.
https://sendgrid.com/blog/how-to-use-sendgrids-dynamic-templates-for-your-transactional-emails/
https://github.com/sendgrid/sendgrid-nodejs/issues/221

๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์— ๊ด€ํ•ด์„œ๋Š” Babel์ด babel ๋ฐ babel/register ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ํŒจํ‚ค์ง€๋ฅผ handlebars ๋ฐ handlebars/register ๋กœ ๋ถ„ํ• ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
import 'babel/register' ํ•  ๋•Œ๋งŒ require() ํ›„ํฌ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์€ ๋‹ค๋ฅธ ์ฃผ์š” ๋ฒ„์ „์— ๋Œ€ํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ด์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ๋ฒ„์ „์ด ์—†์„ ๊ฐ€๋Šฅ์„ฑ์ด ๊ฐ€์žฅ ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ ํ•˜๋‚˜๋Š” ๊ฐ™์€ ๋ฟŒ๋ฆฌ๋ผ๋Š” ๊ฒƒ์„์—์„œ ํŒŒ์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค core.js ( module.exports = require('handlebars/dist/cjs/handlebars') ) ๋‹ค์Œ ์›นํŒฉ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”๋กœ handlebars/core ๋Œ€์‹  handlebars/dist/cjs/handlebars ๋ผ์ธ๊ณผ ํ•จ๊ป˜ ( ์ฝ์–ด๋ณด๊ธฐ).
Webpack์˜ ์ œ์ž‘์ž๋„ ๋…์ผ ์ถœ์‹ ์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“  import Handlebars from 'handlebars/dist/cjs/handlebars' ์ž‘๋™ํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Webpack์— ๋Œ€ํ•ด ์ผ๋ฐ˜ ๊ฐ€์ ธ์˜ค๊ธฐ ๋Œ€์‹  import Handlebars from 'handlebars/dist/cjs/handlebars' ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์„œ ํ–‰์„ README์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋‚˜๋Š” ๋‹น์‹ ์ด์ด ํ˜ธ์— ์ „์— ๋ถ€์ •์ ์ธ ์˜๊ฒฌ์„ ๋‚จ๊ธฐ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์‹ ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” @methodbox ์™€ ๊ทธ์˜ ์˜๊ฒฌ์„ ์–ธ๊ธ‰ํ•˜๊ณ 

ํ•ธ๋“ค๋ฐ”๊ฐ€ ์•„๋‹ˆ๋ผ Webpack์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  @rafde ์™€ ๊ทธ์˜ ์ฝ”๋ฉ˜ํŠธ:

๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ด ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์„ค์ •์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์˜๊ฒฌ์€ Webpack์ด "์ž˜๋ชป๋œ" ๊ฒƒ์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์–ธ์ œ"์— ๋Œ€ํ•œ ์•ฝ์†์€ ์—†์ง€๋งŒ...

"Webpack์ด ์ž˜๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜์‹ญ์‹œ์˜ค"๋ผ๊ณ  ๋งํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@nknapp
์–ด์จŒ๋“  import Handlebars from 'handlebars/dist/cjs/handlebars' ๋Š” ์ž˜ ์ž‘๋™ํ•˜๋ฉฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
README์— "Webpack์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ import Handlebars from 'handlebars/dist/cjs/handlebars' ๋Œ€์‹  import Handlebars from 'handlebars' .
import Handlebars from 'handlebars/dist/cjs/handlebars' ๊ดœ์ฐฎ๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

import Handlebars from 'handlebars/dist/cjs/handlebars

์ด ์˜๊ฒฌ์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ @catamphetamine์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ๋ฌธ์„œ๋Š” ๋งŽ์€ ๊ฐ€์น˜๊ฐ€ ์žˆ์œผ๋ฉฐ ์„ค์น˜ ํŽ˜์ด์ง€์— ํ•ด๋‹น ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ์‚ฌ๋žŒ์„ ์ฃฝ์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ํ›Œ๋ฅญํ•œ ๊ฒƒ์„ ๋งŒ๋“ค๊ณ  ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌธ์„œ๊ฐ€ ํ˜•ํŽธ์—†๋‹ค๋ฉด... ํ”„๋กœ์ ํŠธ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋‹น์‹  ์™ธ์—๋Š” ์•„๋ฌด๋„ ์ดํ•ดํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์–ตํ•˜์„ธ์š”... ์‚ฌ๋žŒ๋“ค์€ ์ž์‹ ์ด ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ๋‘๋ ค์›Œํ•ฉ๋‹ˆ๋‹ค.

-๋์žฅ๋‚œ-

๊ทธ๋Ÿฌ๋‚˜ ๋„์„œ๊ด€์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ๋…ธ๋ ฅ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
์˜คํ”ˆ ์†Œ์Šค ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์ข…์ข… ๋ณด์ƒ์ด ๊ฑฐ์˜ ์—†๋Š” ๊ฐ์‚ฌํ•˜๊ณ  ๊ณ ํ†ต์Šค๋Ÿฌ์šด ์—ฌ์ •์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์ €๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ•ธ๋“ค๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒƒ์„ ๋•๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ํ˜„์žฌ ์ƒˆ๋กœ์šด ๋ฌธ์„œ ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ• ์ค‘์ด๋ฉฐ(์‹œ๊ฐ„์ด ๋‚จ์„ ๋•Œ๋งˆ๋‹ค) ๊ฑฐ๊ธฐ์— ํฌํ•จ์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

#1102์—์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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