рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдБред рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рднрд╛рд░реА рдмрдВрдбрд▓ рдХреНрдпреЛрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИредрдЬреЗрдПрд╕ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЖрдкрдХреЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, todos-with-undo рдпрд╣ 1.9 рдПрдордмреА рд╣реИ! рдЕрдиреНрдп рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд▓рдЧрднрдЧ 2.5 рдПрдордмреА рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред
рд╡реИрд╕реЗ рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо :)
рдкреНрд░рддрд┐ рд╕реЗ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд░реНрдл рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдмреЛрдЭ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣рд╛рдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ - рдХреГрдкрдпрд╛ рдЙрддреНрдкрд╛рджрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдлреБрд▓рд░ рд╡реЗрдмрдкреИрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рд▓реЗрдВред
рдХрдо рд╕реЗ рдХрдо рдЖрдк рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ:
devtool
рдХреЛ 'eval'
рд╕реЗ 'source-map'
рдмрджрд▓реЗрдВwebpack.DefinePlugin
рдХреЛ process.env.NODE_ENV
рд╕реЗ 'production'
webpack.optimize.UglifyJsPlugin
рдЬреЛрдбрд╝реЗрдВNODE_ENV=production
рд╕рд╛рде рдмреЗрдмреЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП .babelrc
react-transform
рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИрдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реЗрдмрдкреИрдХ рдЙрддреНрдкрд╛рджрди рд╡рд┐рдиреНрдпрд╛рд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
var path = require('path');
var webpack = require('webpack');
module.exports = {
devtool: 'source-map',
entry: [
'./src/index'
],
output: {
path: path.join(__dirname, 'dist'),
filename: 'bundle.js',
publicPath: '/static/'
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.UglifyJsPlugin({
compressor: {
warnings: false
}
})
],
module: {
loaders: [{
test: /\.js$/,
loaders: ['babel'],
include: path.join(__dirname, 'src')
}]
}
};
рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рдЙрддреНрдкрд╛рджрди рдореЛрдб рд╕рд╣рд┐рдд рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдпрд╣рд╛рдВ рд╣реИред
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ AsyncRoute рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдореЗрдВ рдХрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ/рд╕реАрдПрд╕рдПрд╕/рдЬреЗрдПрд╕ рдХреЛ рдПрдХ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреЗрд╡рд▓ source-map
рдмрдЬрд╛рдп devtool
рд░реВрдк рдореЗрдВ inline-source-map
рд╣реЛрдиреЗ рд╕реЗ рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ (рдЖрд╢реНрдЪрд░реНрдп) рдЗрдирд▓рд╛рдЗрди рдбрд╛рд▓рдХрд░ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд▓реНрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдПрдХ рдШрдВрдЯреЗ рдХрд╛ рд╕рдордп рд▓рдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдкреНрд░рддрд┐ рд╕реЗ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд░реНрдл рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдмреЛрдЭ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣рд╛рдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ - рдХреГрдкрдпрд╛ рдЙрддреНрдкрд╛рджрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдлреБрд▓рд░ рд╡реЗрдмрдкреИрдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рд▓реЗрдВред
рдХрдо рд╕реЗ рдХрдо рдЖрдк рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ:
devtool
рдХреЛ'eval'
рд╕реЗ'source-map'
рдмрджрд▓реЗрдВwebpack.DefinePlugin
рдХреЛprocess.env.NODE_ENV
рд╕реЗ'production'
webpack.optimize.UglifyJsPlugin
рдЬреЛрдбрд╝реЗрдВNODE_ENV=production
рд╕рд╛рде рдмреЗрдмреЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП.babelrc
react-transform
рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИрдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реЗрдмрдкреИрдХ рдЙрддреНрдкрд╛рджрди рд╡рд┐рдиреНрдпрд╛рд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рдЙрддреНрдкрд╛рджрди рдореЛрдб рд╕рд╣рд┐рдд рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдпрд╣рд╛рдВ рд╣реИред