React-dnd: Babel 였λ₯˜ - 제거된 Babel 5 μ˜΅μ…˜ μ‚¬μš©

에 λ§Œλ“  2016λ…„ 03μ›” 12일  Β·  16μ½”λ©˜νŠΈ  Β·  좜처: react-dnd/react-dnd

μ €λŠ” babel 초보자이고 μƒˆ ν”„λ‘œμ νŠΈλ₯Ό μ„€μ •ν•˜κ³  babel을 μ„€μΉ˜ν•˜κ³  bowerλ₯Ό 톡해 react-dndλ₯Ό μ„€μΉ˜ν–ˆμœΌλ©° λ‚΄ .babelrcμ—λŠ” λ‹€μŒ 쀄이 μžˆμŠ΅λ‹ˆλ‹€.
{ "presets": ["es2015", "stage-0", "react"] }
λͺ¨λ“ˆ λΉŒλ“œ μ‹€νŒ¨: ReferenceError:

[BABEL] <path>\bower_components\react-dnd\src\index.js: Using removed Babel 5 option: <path>\bower_components\react-dnd\.babelrc.stage - Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets

λ‚΄κ°€ 무엇을 잘λͺ»ν•˜κ³  μžˆμ§€

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@μ›”ν„°0331

λ‘œλ”: '베이비 λ‘œλ”'

이것은 μΌμ΄μ–΄μ•Όν•©λ‹ˆλ‹€.

λͺ¨λ“  16 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” @jagan-veeraraghavan! Bower에 react-dndλ₯Ό μ–΄λ–»κ²Œ ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 당신은 κ·Έλ ‡κ²Œν•΄μ•Ό 같은 .

λŒ€μ‹  Bowerκ°€ 전체 Github μ €μž₯μ†Œλ₯Ό 가리킀도둝 ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. .babelrc μ‚¬μš© 쀑인 Babel 버전과 ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” Babel 5 ꡬ성 파일(6)이 ν¬ν•¨λ˜μ–΄ 있기 λ•Œλ¬Έμ— μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. npm λ°°ν¬νŒμ€ 이 νŒŒμΌμ„ μƒλž΅ν•©λ‹ˆλ‹€(btw, Bower보닀 npm을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€).

λ‚΄κ°€ ν‹€λ Έλ‹€λ©΄ 자유둭게 문제λ₯Ό λ‹€μ‹œ μ—΄ 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ 이와 같은 지원 μ§ˆλ¬Έμ— λŒ€ν•΄ gitter room 을 μΆ”μ²œν•©λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”, webpackκ³Ό babel 6을 μ‚¬μš©ν•˜μ—¬ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

ERROR in ./~/dnd-core/lib/index.js
Module build failed: ReferenceError: [BABEL] /node_modules/dnd-core/lib/index.js: 
Using removed Babel 5 option: /node_modules/dnd-core/.babelrc.stage - Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets

λ‚΄ 섀정은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

νŒ¨ν‚€μ§€.json

{
  "devDependencies": {
    "babel-core": "^6.3.26",
    "babel-loader": "^6.2.1",
    "babel-preset-es2015": "^6.3.13",
    "babel-preset-react": "^6.3.13",
    "babel-preset-stage-0": "^6.5.0",
    "css-loader": "^0.23.1",
    "extract-text-webpack-plugin": "^1.0.1",
    "file-loader": "^0.8.5",
    "jquery": "^2.2.1",
    "less": "^2.6.1",
    "less-loader": "^2.2.2",
    "style-loader": "^0.13.0",
    "url-loader": "^0.5.7",
    "webpack": "^1.12.9",
    "webpack-dev-server": "^1.14.0"
  },
  "dependencies": {
    "babel-polyfill": "^6.3.14",
    "expose-loader": "^0.7.1",
    "jquery": "^2.1.4",
    "lodash": "^3.10.1",
    "react": "^0.14.7",
    "react-dnd": "^2.1.3",
    "react-dnd-html5-backend": "^2.1.2",
    "react-dom": "^0.14.7",
    "tracking": "^1.1.2"
  }
}

.babelrc

{
  "presets": ["react", "es2015", "stage-0"]
}

μ›ΉνŒ©

var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
  module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel-loader'
      }
    ]
  }
};

아무도 λ‚˜λ₯Ό 도와쀄 수 μžˆμŠ΅λ‹ˆκΉŒ?

μ•„, webpack.confμ—μ„œ node_modules λ₯Ό μ œμ™Έν•˜μ—¬ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€ :dancers:

      {
        exclude: /(node_modules|bower_components)/,
        test: /\.js$/,
        loader: 'babe-loader'
      },

그것은 λ‚΄ 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€, λŒ€λ‹¨νžˆ κ°μ‚¬ν•©λ‹ˆλ‹€!

@μ›”ν„°0331

λ‘œλ”: '베이비 λ‘œλ”'

이것은 μΌμ΄μ–΄μ•Όν•©λ‹ˆλ‹€.

@billyjanitsch babel μ—…λ°μ΄νŠΈλ₯Ό κ³ λ € ν–ˆμŠ΅λ‹ˆκΉŒ? 당신은 κ·Έκ²ƒμœΌλ‘œ PR을 μ—΄κ² μŠ΅λ‹ˆκΉŒ?

Webpack 및 Babel 6μ—μ„œ 이 λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. @walter0331κ³Ό μœ μ‚¬ν•©λ‹ˆλ‹€. node_modules 의 μ‚¬μš©μž μ •μ˜ μΆ•μ†Œλ₯Ό μˆ˜ν–‰ν•˜κ³  μžˆμœΌλ―€λ‘œ node_modules λ₯Ό μ œμ™Έν•˜λ©΄ 도움이 λ˜μ§€ μ•ŠμœΌλ―€λ‘œ λ‚΄ Babel을 톡해 이 μž‘μ—…μ„ 계속 μ‹€ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λͺ…ν™•νžˆν•˜κΈ° μœ„ν•΄ λͺ¨λ“  μ‚¬λžŒλ“€μ€ "babe-loader"κ°€ μ•„λ‹ˆλΌ "babel-loader"λ₯Ό μ˜λ―Έν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

loader: 'babel-loader'

babel5.xμ—μ„œ 6.x둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λ €κ³  ν•˜λŠ”λ° λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. λ‚˜λŠ” babel 6 및 webpackκ³Ό ν•¨κ»˜ react, reduxλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ•„λž˜λŠ” λ‚΄ μ›ΉνŒ© ꡬ성(일뢀)μž…λ‹ˆλ‹€.
λͺ¨λ“ˆ: {
λ‘œλ”: [
{ ν…ŒμŠ€νŠΈ: /.svg$/, μ œμ™Έ: /.less$/, λ‘œλ”: 'svg-inline'},
{ ν…ŒμŠ€νŠΈ: /.컀피$/, λ‘œλ”: '컀피 λ‘œλ”' },
{ ν…ŒμŠ€νŠΈ: /.jsx?$/, μ œμ™Έ: /node_modules/,
λ‘œλ”:
['react-hot-loader/webpack', 'babel-loader?' + JSON.stringify({
사전 μ„€μ •: ['es2015','stage-0','λ°˜μ‘'],
ν”ŒλŸ¬κ·ΈμΈ: ['transform-decorators-legacy',
['비동기λ₯Ό λͺ¨λ“ˆ λ°©μ‹μœΌλ‘œ λ³€ν™˜',
{'λͺ¨λ“ˆ': 'λΈ”λ£¨λ²„λ“œ', 'λ©”μ„œλ“œ': '코루틴'}
]]
})
]
},
{ ν…ŒμŠ€νŠΈ: /.less/, λ‘œλ”: 'style-loader!css-loader!less-loader' },
{ ν…ŒμŠ€νŠΈ: /.css/, λ‘œλ”: 'style-loader!css-loader' },
{ ν…ŒμŠ€νŠΈ: /.json$/, λ‘œλ”: 'json-loader' },
{ ν…ŒμŠ€νŠΈ: /.gif$/, λ‘œλ”: "url-loader?mimetype=image/png" },
{ ν…ŒμŠ€νŠΈ: /.woff(2)?(\?v=[0-9].[0-9].[0-9])?$/, λ‘œλ”: "url-loader?limit=10000&minetype=application/ font-woff" },
{ ν…ŒμŠ€νŠΈ: /.(ttf|eot|svg)(\?v=[0-9].[0-9].[0-9])?$/, λ‘œλ”: "파일 λ‘œλ”" },
{ ν…ŒμŠ€νŠΈ: /jquery.js$/, λ‘œλ”: 'expose?jQuery' },
]
},

.babelrc

{
"사전 μ„€μ •": ["es2015", "λ°˜μ‘", "단계-0"],
"ν”ŒλŸ¬κ·ΈμΈ": ["λ³€ν˜• λ°μ½”λ ˆμ΄ν„°-λ ˆκ±°μ‹œ", ["λ³€ν˜•-비동기-λŒ€-λͺ¨λ“ˆ-방법", {
"λͺ¨λ“ˆ": "λΈ”λ£¨λ²„λ“œ",
"λ©”μ„œλ“œ": "코루틴"
}]]
}

이 였λ₯˜ λ©”μ‹œμ§€λŠ” 주둜 'bluebird'μ—μ„œ Promiseλ₯Ό κ°€μ Έμ˜€λŠ” νŒŒμΌμ— λŒ€ν•΄ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

아무도 λ„μšΈ 수 μžˆμŠ΅λ‹ˆκΉŒ?

좩돌. λΉŒλ“œ μ‹œ μ’…μ†μ„±μ˜ babel ꡬ성을 λ¬΄μ‹œν•  수 μžˆλŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ...?

@walter0331 정말 κ°μ‚¬ν•©λ‹ˆλ‹€. 이 문제둜 인해 κ·€ν•˜μ˜ μ†”λ£¨μ…˜μ„ 읽을 λ•ŒκΉŒμ§€ ν˜Όλž€

@ry928330 기본적으둜 disposables λΌμ΄λΈŒλŸ¬λ¦¬λŠ” react-dnd μ—μ„œ μ‚¬μš©λ˜κ³  disposables λŠ” 였래된 babel 버전인 Babel 5λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€(이 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μœ μ§€ κ΄€λ¦¬λ˜μ§€ μ•ŠμŒ). webpack ꡬ성에 ν¬ν•¨λ˜λ©΄ ν˜„μž¬ Babel 버전 6에 있기 λ•Œλ¬Έμ— 좩돌이 λ°œμƒν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ—¬κΈ°μ„œ 더 λ‚˜μ€ μ†”λ£¨μ…˜(적어도 μ €μ—κ²Œ νš¨κ³Όκ°€ μžˆμ—ˆλ˜ 것)은 λ°˜λ“œμ‹œ λͺ¨λ“  node_modulesλ₯Ό μ œμ™Έ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

babel-loader webpack ꡬ성에 exclude: /(disposables)/ λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

{
     test: /\.js$/,
     exclude: /(disposables)/,
     loader: 'babel-loader',
}

그것이 μ˜¬λ°”λ₯Έ ν•΄κ²°μ±…μž…λ‹ˆλ‹€. Babel disposables 의 μ–΄λ–€ 버전이 λ‚΄λΆ€μ—μ„œ μ‚¬μš©λ˜λŠ”μ§€λŠ” μ€‘μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ§„μ§œ λ¬Έμ œλŠ” Babel둜 node_modules λ₯Ό μ»΄νŒŒμΌν•˜λ €κ³  ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이것은 항상 μ•ˆμ „ν•œ 것은 μ•„λ‹ˆλ©° μˆ˜ν–‰ 쀑인 μž‘μ—…μ„ μ•Œκ³  νŠΉμ • νŒ¨ν‚€μ§€λ§Œ μ„ νƒν•˜μ§€ μ•ŠλŠ” ν•œ(λ˜λŠ” engines ν•„λ“œμ™€ 같은 λ‹€λ₯Έ μ‹ ν˜Έλ₯Ό μ‚¬μš©ν•˜κ³  ꡬ성을 λ¬΄μ‹œν•˜μ§€ μ•ŠλŠ” ν•œ) 이 μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.

즉, [email protected] "μˆ˜μ •"을 κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜λ„ node_modules μ—μ„œ λͺ¨λ“  것을 μ»΄νŒŒμΌν•˜λ©΄ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€.

mix.webpackConfig({ module: { rules: [{ test: /\.jsx?$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', options: Config.babel() } }] } })

그것은 μž‘λ™ν•©λ‹ˆλ‹€, κ°μ‚¬ν•©λ‹ˆλ‹€!

[]λ₯Ό μΆ”κ°€ν•˜μ—¬ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.
presets: [ ["es2015", { loose: false }] ]

이것은 μ‹€μˆ˜λ‘œ server/.babelrc νŒŒμΌμ— stage: 1 λ₯Ό μΆ”κ°€ν•œ 후에 λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

{
  "presets": ["es2015", "stage-0"],
  "plugins": ["transform-runtime"],
   stage: 1
}

이것을 μ œκ±°ν•˜μ—¬ κ³ μ •

{
  "presets": ["es2015", "stage-0"],
  "plugins": ["transform-runtime"],
}
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰