рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмреАрдИрдПрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рд▓реЗрдЦ рд╡реЗрдмрдкреИрдХ рдмрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреАрдИрдПрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ред рдореИрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкрд╛рдардХреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред


рд╕рд╛рдордЧреНрд░реА рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬреЛ рдЕрднреА рдмреАрдИрдПрдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдкрд╣рд▓реБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ, рдФрд░ "рдЕрднреНрдпрд╛рд╕" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдмрд┐рдЯ


рдпрджрд┐ рдпрд╣ BEM рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдкрд╣рд▓реА рдмрд╛рд░ рд╕реБрдирд╡рд╛рдИ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд░рдЦреЗрдВред


рдмреАрдИрдПрдо рдПрдХ рдкрджреНрдзрддрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдкреИрдорд╛рдиреЗ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдВрдбреЗрдХреНрд╕ рдиреЗ рдЗрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдХрд╛рдо рдореЗрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред


BEM рдХрд╛ рдЕрд░реНрде "рдмреНрд▓реЙрдХ, рдПрд▓реАрдореЗрдВрдЯ, рдореЛрдбрд┐рдлрд╛рдпрд░" рд╣реИред


рдмреНрд▓реЙрдХ рдПрдХ рд╕реНрд╡рд╛рдпрддреНрдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдХрд╛рдИ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред


рдПрдХ рддрддреНрд╡ рдПрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдПрдХ рдЖрдЗрдЯрдо рдХреЗрд╡рд▓ рдореВрд▓ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдПрдХ рдЗрдХрд╛рдИ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдмреНрд▓реЙрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди, рд╕реНрдерд┐рддрд┐ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред


рдпреЗ рдШрдЯрдХ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╕реБрдВрджрд░рддрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреЛрдб рдЕрд▓рдЧрд╛рд╡ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдЙрдкрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред


BEM рдкреНрд░рд▓реЗрдЦрди рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ "рд▓реЗрдХрд┐рди" рд╣реИ: рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ рд╕реАрдорд╛ред рдпрджрд┐ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдПрдХ рдкреГрд╖реНрда рдХреЛ рдкрдврд╝рдХрд░ рд▓реЗрдЖрдЙрдЯ рдХреА рдореВрд▓ рдмрд╛рддреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред


рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпреЛрдВ рдерд╛? рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд╕рднреА рдХреЛ рдХреЛрдб рдХреЗ рдЖрдпреЛрдЬрди рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдХреЛрдб рдХреЛ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛, рдлрд┐рд░ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рднреА рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд▓реЗрдХреНрдЯрд░реЛрдВ рдпрд╛ рдмрдВрдбрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдХреЛрдб рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред


рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рджреЗрдВ: рдпрд╣ рдЖрдЧреЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХреЛрдВ рдХреЗ рдкрд╛рд╕ рдмреЗрд╕рд┐рдХ рд╡реЗрдмрдкреИрдХ рдХреМрд╢рд▓ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЗрд╕ рдЙрдкрдХрд░рдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВ ред


рдмреАрдИрдПрдо рдкреНрд░рд▓реЗрдЦрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдПрдирдмреА рдФрд░ рдЧрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ред


рдИрдПрдирдмреА рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмреАрдИрдПрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред рд╡рд╣ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ BEM рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╡рд╣ рдПрдХ рдЕрдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:


make.js
const techs = { // essential fileProvider: require('enb/techs/file-provider'), fileMerge: require('enb/techs/file-merge'), // optimization borschik: require('enb-borschik/techs/borschik'), // css postcss: require('enb-postcss/techs/enb-postcss'), postcssPlugins: [ require('postcss-import')(), require('postcss-each'), require('postcss-for'), require('postcss-simple-vars')(), require('postcss-calc')(), require('postcss-nested'), require('rebem-css'), require('postcss-url')({ url: 'rebase' }), require('autoprefixer')(), require('postcss-reporter')() ], // js browserJs: require('enb-js/techs/browser-js'), // bemtree // bemtree: require('enb-bemxjst/techs/bemtree'), // bemhtml bemhtml: require('enb-bemxjst/techs/bemhtml'), bemjsonToHtml: require('enb-bemxjst/techs/bemjson-to-html') }, enbBemTechs = require('enb-bem-techs'), levels = [ { path: 'node_modules/bem-core/common.blocks', check: false }, { path: 'node_modules/bem-core/desktop.blocks', check: false }, { path: 'node_modules/bem-components/common.blocks', check: false }, { path: 'node_modules/bem-components/desktop.blocks', check: false }, { path: 'node_modules/bem-components/design/common.blocks', check: false }, { path: 'node_modules/bem-components/design/desktop.blocks', check: false }, 'common.blocks', 'desktop.blocks' ]; module.exports = function(config) { const isProd = process.env.YENV === 'production'; config.nodes('*.bundles/*', function(nodeConfig) { nodeConfig.addTechs([ // essential [enbBemTechs.levels, { levels: levels }], [techs.fileProvider, { target: '?.bemjson.js' }], [enbBemTechs.bemjsonToBemdecl], [enbBemTechs.deps], [enbBemTechs.files], // css [techs.postcss, { target: '?.css', oneOfSourceSuffixes: ['post.css', 'css'], plugins: techs.postcssPlugins }], // bemtree // [techs.bemtree, { sourceSuffixes: ['bemtree', 'bemtree.js'] }], // bemhtml [techs.bemhtml, { sourceSuffixes: ['bemhtml', 'bemhtml.js'], forceBaseTemplates: true, engineOptions : { elemJsInstances : true } }], // html [techs.bemjsonToHtml], // client bemhtml [enbBemTechs.depsByTechToBemdecl, { target: '?.bemhtml.bemdecl.js', sourceTech: 'js', destTech: 'bemhtml' }], [enbBemTechs.deps, { target: '?.bemhtml.deps.js', bemdeclFile: '?.bemhtml.bemdecl.js' }], [enbBemTechs.files, { depsFile: '?.bemhtml.deps.js', filesTarget: '?.bemhtml.files', dirsTarget: '?.bemhtml.dirs' }], [techs.bemhtml, { target: '?.browser.bemhtml.js', filesTarget: '?.bemhtml.files', sourceSuffixes: ['bemhtml', 'bemhtml.js'], engineOptions : { elemJsInstances : true } }], // js [techs.browserJs, { includeYM: true }], [techs.fileMerge, { target: '?.js', sources: ['?.browser.js', '?.browser.bemhtml.js'] }], // borschik [techs.borschik, { source: '?.js', target: '?.min.js', minify: isProd }], [techs.borschik, { source: '?.css', target: '?.min.css', minify: isProd }] ]); nodeConfig.addTargets([/* '?.bemtree.js', */ '?.html', '?.min.css', '?.min.js']); }); }; 

рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рд╕реНрдЯрдм рдкрдмреНрд▓рд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреЛрдбред


рдИрдПрдирдмреА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ рдЬреЛ рд╕рд┐рд░реНрдл рдмреАрдИрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред


рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВ , рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЖрдк, рдореЗрд░реА рддрд░рд╣, рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреА рдкреВрд░реА рддрд╕реНрд╡реАрд░ рд▓реЗрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?


BEM рдкреНрд░рд▓реЗрдЦрди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдордЭрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдФрд░ рд╡реЗ рд╣рдореЗрд╢рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╕реНрдкрд╖реНрдЯ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреАрдИрдПрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред


рдЕрднреНрдпрд╛рд╕


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рдХреЛрдб рдкреГрдердХреНрдХрд░рдг рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдВрдЧрдарди рдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреАрдИрдПрдо рдФрд░ рдЗрд╕рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдкреГрдердХреНрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред


рд╣рдо рд╕рд░рд▓рддрдо рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рддрд░реНрдХ рд░реИрдЦрд┐рдХ рдФрд░ рд╕рд╣рдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪрд▓реЛ рдПрдХ рдкреГрд╖реНрда рдХреЛ рдПрдХ BEM рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреА: CSS рдФрд░ JSред


рдЖрдк "рдмреНрд▓реЙрдХ" рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ DIV рдХреЗ рд╕рд╛рде HTML рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рд╕рднреА рддрдХрдиреАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред BEM рд╡рд░реНрдЧ рдХреЗ рдирд╛рдордХрд░рдг рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред


рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдорд┐рд▓рд╛ рд╣реИ:


 тФЬтФАтФА desktop #   "desktop" тФВ тФФтФАтФА block #  "block" тФВ тФЬтФАтФА block.css # CSS-  "block" тФВ тФФтФАтФА block.js # JS-  "block" тФЬтФАтФА dist # ,      тФЬтФАтФА pages # ,       JS- тФВ тФЬтФАтФА index.html # ,     тФВ тФФтФАтФА index.js #      index.html тФФтФАтФА webpack.config.js # - Webpack 

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ "рдбреЗрд╕реНрдХрдЯреЙрдк" рдХреЗ рдУрд╡рд░рд░рд╛рдЗрдб рд╕реНрддрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИред рдмреАрдИрдПрдо рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ, рдкреБрдирд░реНрд╡рд┐рддрд░рдг рд╕реНрддрд░ рдРрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддреЗ рд╣реИрдВред рдЬрдм рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд░рдо рдореЗрдВ рд╕рднреА рдкреБрдирд░реНрдирд┐рд░реНрдзрд╛рд░рдг рд╕реНрддрд░реЛрдВ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдВрддрд┐рдо рдмрдВрдбрд▓ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдбреЗрд╕реНрдХрдЯреЙрдк" рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдзрд╛рд░рдг рд╕реНрддрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП "рдореЛрдмрд╛рдЗрд▓" рдХреЗ рдирдП рд╕реНрддрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдорд╛рди рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреЗ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░, рд╣рдореЗрдВ рдЙрд╕ рдХреЛрдб рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рдбреЗрд╕реНрдХрдЯреЙрдк" рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдЧрд╛ред


рдпрд╣рд╛рдБ рд╡реЗрдмрдкреИрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:


 // webpack.config.js //    const path = require('path'); const opy = require('copy-webpack-plugin'); module.exports = { //  entry  output -       entry: path.resolve(__dirname, "pages", "index.js"), output: { filename: 'index.js', path: path.join(__dirname, 'dist') }, module: { rules: [ //    CSS- { test: /\.css$/, loader: 'style-loader!css-loader' } ] }, plugins: [ new opy([ //  HTML-      { from: path.join(__dirname, 'pages'), test: /\.html$/, to: path.join(__dirname, "dist") } ]) ] } 

рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓ / /pages/index.js рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, CSS рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЛрдбрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ /pages/index.html рдкрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ /dist/index.html ред


index.html
 <html> <body> <div class="block">Hello, World!</div> <script src="index.js"></script> </body> </html> 

block.css
 .block { color: red; font-size: 24px; text-align: center; } 

block.js
 document.getElementsByClassName('block')[0].innerHTML += " [This text is added by block.js!]" 

рдЙрджрд╛рд╣рд░рдг рдПрдХ рдУрд╡рд░рд░рд╛рдЗрдб рд╕реНрддрд░ рдФрд░ рдПрдХ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдкреГрд╖реНрда рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдХ рдХреА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ (рд╕реАрдПрд╕рдПрд╕, рдЬреЗрдПрд╕) рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрдВред


рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ require() :


 // index.js require('../desktop/block/block.js'); require('../desktop/block/block.css'); 

рд╡реЗрдмрдкреИрдХ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред ./dist рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ index.html рдЦреЛрд▓реЗрдВ:


рдкреЗрдЬ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


рдмреНрд▓реЙрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП "BEM" рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдИрдПрдо рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдбрд┐рдЬрд╛рдЗрдирд░ рдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдкреГрд╖реНрда рдкрд░ рдЕрдм рдПрдХ рдмреНрд▓реЙрдХ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕реМ рд╣реИред рдкрд┐рдЫрд▓реЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдмрд╛рдж, рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ require() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗред рдпрд╛рдиреА, index.js рдореЗрдВ рдХреЛрдб рдХреА рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕реМ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред


рдХреЛрдб рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЯрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд╡реЗ рдЦрд░рд╛рдм рд╣реИрдВред рдЕрдкреНрд░рдпреБрдХреНрдд рдХреЛрдб рдФрд░ рднреА рдмрджрддрд░ рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкреЗрдЬ рдкрд░ рдЙрдкрд▓рдмреНрдз рдмреНрд▓реЙрдХреНрд╕ рдХреЗ рдХреЗрд╡рд▓ 10 рдпрд╛ 20 рдпрд╛ 53 рд╣реЛрдВрдЧреЗ? рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рд╣реЛрдЧрд╛: рдЙрд╕реЗ рдареАрдХ рдЙрд╕реА рдкреГрд╖реНрда рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреГрд╖реНрда рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдмрдВрдбрд▓ рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред


рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХрд╛рдо рд╡реЗрдмрдкреИрдХ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЗрд╖реНрдЯрддрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:


  1. рдореМрдЬреВрджрд╛ HTML-рдХреЛрдб рд╕реЗ BEM рдирд╛рдордХрд░рдг рдХреЗ рдЕрдиреБрд░реВрдк рдХрдХреНрд╖рд╛рдПрдВ рдЪреБрдиреЗрдВ;
  2. рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреГрд╖реНрда рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдмреАрдИрдПрдо рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
  3. рдЬрд╛рдВрдЪ рд▓реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рд╕реНрддрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХ, рддрддреНрд╡ рдФрд░ рд╕рдВрд╢реЛрдзрдХ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИрдВ;
  4. рдЙрдЪрд┐рдд require() рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЗрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рддрдХрдиреАрдХ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреЛрдбрд╝реЗрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддреИрдпрд╛рд░ рдмреВрдЯрд▓реЛрдбрд░ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдореБрдЭреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рдПрдХ рдмреЛрддрд▓ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ bemdecl-to-fs-loader рдХреЗ рдкрд╛рд░ рдЖрдпрд╛, рдЬреЛ BEM рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ require() рднрд╛рд╡реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрддрд░реЛрдВ рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред


BEM рдШреЛрд╖рдгрд╛ - рдкреГрд╖реНрда рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ BEM рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреАред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

рдПрдХ рд▓рд┐рдВрдХ рдЧрд╛рдпрдм рд╣реИ - HTML рдХреЛ BEM рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ред рдпрд╣ рдХрд╛рд░реНрдп html2bemjson рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


bemjson - рдбреЗрдЯрд╛ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреГрд╖реНрда рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдкреГрд╖реНрда рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП bem-xjst рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред Bejjson рдХрд╛ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдШреЛрд╖рдгрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрдмрдХрд┐ bemjson рдЙрдирдХреЗ рдЖрджреЗрд╢ рдХреЛ рднреА рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

bemjson рдПрдХ рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ bemdecl-to-fs-loader рддрдХ рд╕рдВрдЪрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░реВрдк рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, SDK: bemjson-to- рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ рдпреЗ рдирд┐рдпрдорд┐рдд рдПрдирдУрдбреАрдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ, рди рдХрд┐ рд╡реЗрдмрдкреИрдХ рд▓реЛрдбрд░, рдЖрдкрдХреЛ рдПрдХ рд░реИрдкрд░ рд▓реЛрдбрд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреВрдЯрд▓реЛрдбрд░ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ:


 let html2bemjson = require("html2bemjson"); let bemjson2decl = require("bemjson-to-decl"); module.exports = function( content ){ if (content == null && content == "") callback("html2bemdecl requires a valid HTML."); let callback = this.async(); let bemjson = html2bemjson.convert( content ); let decl = bemjson2decl.convert( bemjson ); console.log(decl); //     callback(null, decl); } 

рдмреВрдЯрд▓реЛрдбрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдирдкреАрдПрдо рдкрд░ рдореЙрдбреНрдпреВрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ред


рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмреВрдЯрд▓реЛрдбрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ:


 const webpack = require('webpack'); const path = require('path'); const opy = require('copy-webpack-plugin'); module.exports = { entry: path.resolve(__dirname, "pages", "index.js"), output: { filename: 'index.js', path: path.join(__dirname, 'dist') }, module: { rules: [ { test: /\.html$/, use: [ { //    bemdecl-to-fs-loader loader: 'bemdecl-to-fs-loader', //       options: { levels: ['desktop'], extensions: ['css', 'js'] } }, //      html2bemdecl-loader { loader: 'html2bemdecl-loader' } ] }, { test: /\.css$/, loader: 'style-loader!css-loader' } ] }, plugins: [ new opy([ { from: path.resolve(__dirname, 'pages'), test: /\.html$/, to: path.resolve(__dirname, "dist") } ]) ] } 

bemdecl-to-fs-loader рдмреВрдЯрд▓реЛрдбрд░ levels рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╣реИред extensions рдлрд╝рд╛рдЗрд▓ рддрдХрдиреАрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рддрдХрдиреАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдХреЗрд╡рд▓ рдПрдХ HTML рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд░реВрдкрд╛рдВрддрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред


рдЖрдЗрдП index.js рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ:


 require('./index.html'); 

рдЕрдм Webpack рдЪрд▓рд╛рдПрдВред рдХреЛрдбрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╕рдордп, рд▓рд╛рдЗрди рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ:


 [ BemEntityName { block: 'block' } ] 

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдШреЛрд╖рдгрд╛ рдХрд╛ рдЧрдарди рд╕рдлрд▓ рд░рд╣рд╛ред рд╣рдо рд╕реАрдзреЗ рд╡реЗрдмрдкреИрдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:


  Entrypoint main = index.js [0] ./pages/index.js 24 bytes {0} [built] [1] ./pages/index.html 74 bytes {0} [built] [2] ./desktop/block/block.css 1.07 KiB {0} [built] [3] ./node_modules/css-loader/dist/cjs.js!./desktop/block/block.css 217 bytes {0} [built] [7] ./desktop/block/block.js 93 bytes {0} [built] + 3 hidden modules 

рдкреЗрдЬ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ


рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛, рдЗрд╕ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдХрд┐ рд╕рднреА рдмреНрд▓реЙрдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рдереАрдВред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд▓рд┐рдП HTML рдореЗрдВ BEM- рдирд╛рдо рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛ рдЬреЛрдбрд╝рдирд╛, рдЗрд╕ HTML рдХреЛ require() рдЬреЛрдбрд╝рдирд╛ require() рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдирд╛ рд╣реИред


рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬреЛ рдмреАрдИрдПрдо рдкрджреНрдзрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рд╕рд╛рде рд╣реА рдмреНрд▓реЙрдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИред


рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЗ рддрдВрддреНрд░ рдФрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рд╕реЗ рд╕рд╛рд░, рд╣рдордиреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдкреНрд░рднрд╛рд╡реА рд╡реЗрдмрдкреИрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдмрдирд╛рдпрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдмреАрдИрдПрдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдИрдПрдо рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд░рд┐рдЪрд┐рддреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред


рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


Source: https://habr.com/ru/post/hi447560/


All Articles