рд╕реНрдХреЗрдЪ + Node.js: рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЗрдХрди рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рднрд╛рдЧ реи



рдпрд╣ рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рд╣реИ рдЬреЛ рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦреЗ рдЧрдП рд╕рднреА рдЖрдЗрдХрди рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдХрди рдХреЗ рдП / рдмреА рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рдеред

рдЖрдк рд▓рд┐рдВрдХ рд╕реЗ рдкрд╣рд▓рд╛ рднрд╛рдЧ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред



рдкрд┐рдЫрд▓реА рдмрд╛рд░, рд╣рдордиреЗ рд╕реНрдХреЗрдЪ рдлрд╛рдЗрд▓реЗрдВ рддреИрдпрд╛рд░ рдХреА рдереАрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЖрдЗрдХрди рд╕рд╣реА рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдФрд░ рд╕рд╣реА рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдереЗред рдпрд╣ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдмрд╛рд░реА рд╣реИред

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

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг


Node.js рдкрд░ рд▓рд┐рдЦреА рдЧрдИ рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдХрд╛рдлреА рд╕реАрдзреА рд╣реИ: рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдХреЗ, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП (рдпрд╣ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ) рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рд╕реНрдХреЗрдЪ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд▓реЗ рдореЗрдВ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд░рддрд╛ рд╣реИред

  1. рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдЯреЛрдХрди рд▓реЗрддреЗ рд╣реИрдВ (рд╣рдореЗрдВ рд░рдВрдЧ рдореВрд▓реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
  2. рдХреНрд▓реЛрди рдмреНрд░рд╛рдВрдб-рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреЗрдЪ рдлрд╛рдЗрд▓реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЖрдВрддрд░рд┐рдХ JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирдЬрд╝рд┐рдк рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдорд╛рди (рдмрд╛рдж рдореЗрдВ) рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреА рд╣реИрдВред
  3. рдЗрди JSON рдлрд╝рд╛рдЗрд▓реЛрдВ ( document.json , meta.json рдФрд░ рдкреГрд╖реНрдареЛрдВ / pageUniqueID.json ) рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИред рд╣рдо рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ / рдЖрдЗрдХрди рдХреА рд╕реВрдЪреА рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
  4. JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЖрд░реНрдХрд╛рдЗрд╡ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ (рдХреНрд▓реЛрди рдФрд░ рдЕрдкрдбреЗрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреАрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ (iOS, Android, Mobile Web) рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рддрд╛ рд╣реИред

рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рднрд╛рдЧ рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

// ... modules imports here const SKETCH_FILES = { badoo: ['icons_common'], blendr: ['icons_common', 'icons_blendr'], fiesta: ['icons_common', 'icons_fiesta'], hotornot: ['icons_common', 'icons_hotornot'], }; const SKETCH_FOLDER_PATH = path.resolve(__dirname, '../src/'); const SKETCH_TEMP_PATH = path.resolve(SKETCH_FOLDER_PATH, 'tmp'); const DESTINATION_PATH = path.resolve(__dirname, '../dist'); console.log('Build started...'); if (sketchtool.check()) { console.log(`Processing Sketch file via ${sketchtool.version()}`); build(); } else { console.info('You need Sketch installed to run this script'); process.exit(1); } // ---------------------------------------- function build() { // be sure to start with a blank slate del.sync([SKETCH_TEMP_PATH, DESTINATION_PATH]); // process all the brands declared in the list of Sketch files Object.keys(SKETCH_FILES).forEach(async (brand) => {   // get the design tokens for the brand   const brandTokens = getDesignTokens(brand);    // prepare the Sketch files (unzipped) and get a list of them   const sketchUnzipFolders = await prepareSketchFiles({     brand,     sketchFileNames: SKETCH_FILES[brand],     sketchFolder: SKETCH_FOLDER_PATH,     sketchTempFolder: SKETCH_TEMP_PATH   });   // get the Sketch metadata   const sketchMetadata = getSketchMetadata(sketchUnzipFolders);   const sketchDataSharedStyles = sketchMetadata.sharedStyles;   const sketchDataAssets = sketchMetadata.assetsMetadata;   generateAssetsPDF({     platform: 'ios',     brand,     brandTokens,     sketchDataSharedStyles,     sketchDataAssets   });   generateAssetsSVGDynamicMobileWeb({     platform: 'mw',     brand,     brandTokens,     sketchDataSharedStyles,     sketchDataAssets   });   generateAssetsVectorDrawableDynamicAndroid({     platform: 'android',     brand,     brandTokens,     sketchDataSharedStyles,     sketchDataAssets   }); }); } 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЛрдб рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЗрд╕ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдг рддреИрдпрд╛рд░ prepareSketchFiles , getSketchMetadata рдФрд░ getSketchMetadata generateAssets[format][platform] рдХрд╛рд░реНрдпред рдиреАрдЪреЗ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рд╕реНрдХреЗрдЪ рдлрд╛рдЗрд▓реЗрдВ рддреИрдпрд╛рд░ рдХрд░рдирд╛


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

рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдмреНрд░рд╛рдВрдб рд╕реЗ рдЬреБрдбрд╝реА рдлрд╛рдЗрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Blendr рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ icons_common.sketch рдФрд░ icons_blendr.sketch рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ ) рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдлрд╝реЛрд▓реНрдбрд░ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдмреНрд░рд╛рдВрдб рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирд╛рдо рд╡рд╛рд▓реЗ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░) рдореЗрдВ рдХреНрд▓реЛрди рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЕрдирдЬрд┐рдк рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

рддрдм JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдП / рдмреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдзреАрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдирд╛рдо рдореЗрдВ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рд░реНрдпрд╛рдд рдХреЗ рджреМрд░рд╛рди, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╛рдо (рдкреНрд░рдпреЛрдЧ рдХреЗ рдЕрдиреВрдареЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд░реВрдк) рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдпрд╣ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрд╕рд╛рдзрди рдП / рдмреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдзреАрди рд╣реИ рдЬрд┐рд╕ рдкреГрд╖реНрда рдкрд░ рд╡рд╣ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ: рдпрджрд┐ рдпрд╣ рд╣реИ, рддреЛ рдирд╛рдо рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ " XP_ " рд╣реЛрдЧрд╛ред



рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ " this__is_an_experiment " рдХреЗ рдПрдХ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ "рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо" рдЖрдЗрдХрди-рдирд╛рдо [рд╕рдВрд╕реНрдХрд░рдг-рдирд╛рдо] .ext "рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкрдврд╝рдирд╛ рд╕реНрдХреЗрдЪ рдореЗрдЯрд╛рдбреЗрдЯрд╛


рджреВрд╕рд░рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдпрд╛ рдмрд▓реНрдХрд┐ рдЖрдВрддрд░рд┐рдХ JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рджреЗрдЦрд╛, рдпреЗ рджреЛ рдореБрдЦреНрдп рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ ( document.json рдФрд░ meta.json ) рдФрд░ рдкреЗрдЬ рдлрд╛рдЗрд▓реЗрдВ ( рдкреЗрдЬ / pageUniqueId.json )ред

рдбреЙрдХреНрдпреВрдореЗрдВрдЯ.рдЬреЙрди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд▓реЗрдпрд░ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

 { "_class": "document", "do_objectID": "45D2DA82-B3F4-49D1-A886-9530678D71DC", "colorSpace": 1, ... "layerStyles": {  "_class": "sharedStyleContainer",  "objects": [    {      "_class": "sharedStyle",      "do_objectID": "9BC39AAD-CDE6-4698-8EA5-689C3C942DB4",      "name": "features/feature-like",      "value": {        "_class": "style",        "fills": [          {            "_class": "fill",            "isEnabled": true,            "color": {              "_class": "color",              "alpha": 1,              "blue": 0.10588235408067703,              "green": 0.4000000059604645,              "red": 1            },            "fillType": 0,            "noiseIndex": 0,            "noiseIntensity": 0,            "patternFillType": 1,            "patternTileScale": 1          }        ],        "blur": {...},        "startMarkerType": 0,        "endMarkerType": 0,        "miterLimit": 10,        "windingRule": 1      }    },    ... 

рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╢реИрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рд╕реНрд╡рд░реВрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдж рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╣рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА (рд╕реНрдХреЗрдЪ рдореЗрдВ do_objectID рд╕рдВрдкрддреНрддрд┐) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢реИрд▓реА рдХрд╛ рдирд╛рдо рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:

 const parsedSharedStyles = {}; parsedDocument.layerStyles.objects.forEach((object) => { parsedSharedStyles[object.do_objectID] = {  name: object.name,  isFill: _.get(object, 'value.fills[0].color') !== undefined,  isBorder: _.get(object, 'value.borders[0].color') !== undefined, }; }); 

рдЕрдм рд╣рдо met.json рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреГрд╖реНрдареЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЙрдирдХреА unique-id рдФрд░ name рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:

 { "commit": "623a23f2c4848acdbb1a38c2689e571eb73eb823", "pagesAndArtboards": {  "EE6BE8D9-9FAD-4976-B0D8-AB33D2B5DBB7": {    "name": "Icons",    "artboards": {      "3275987C-CE1B-4369-B789-06366EDA4C98": {        "name": "badge-feature-like"      },      "C6992142-8439-45E7-A346-FC35FA01440F": {        "name": "badge-feature-crush"      },      ...      "7F58A1C4-D624-40E3-A8C6-6AF15FD0C32D": {        "name": "tabbar-livestream"      }      ...    }  },  "ACF82F4E-4B92-4BE1-A31C-DDEB2E54D761": {    "name": "XP_this__is_an_experiment",    "artboards": {      "31A812E8-D960-499F-A10F-C2006DDAEB65": {        "name": "this__is_an_experiment/tabbar-livestream[variant1]"      },      "20F03053-ED77-486B-9770-32E6BA73A0B8": {        "name": "this__is_an_experiment/tabbar-livestream[variant2]"      },      "801E65A4-3CC6-411B-B097-B1DBD33EC6CC": {        "name": "this__is_an_experiment/tabbar-livestream[control]"      }    }  }, 

рдлрд┐рд░ рд╣рдо рдкрдиреНрдиреЛрдВ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ (рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреНрд░рдкрддреНрд░ [рдкреЗрдЬUniqueId] .json ) рдХреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ (рд╡реЗ рдкрд░рддреЛрдВ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдХрди рдХрд╛ рдирд╛рдо , рдЪреМрдбрд╝рд╛рдИ / рдКрдВрдЪрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░рдд рдХреЗ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдЪ рдореЗрдЯрд╛рдбреЗрдЯрд╛ , рдФрд░ рдпрджрд┐ рд╣рдо рдПрдХ рдкреНрд░рдпреЛрдЧ рдкреГрд╖реНрда рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдП / рдмреА рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо рдФрд░ рдЗрд╕ рдЖрдЗрдХрди рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг ред

рдиреЛрдЯ : page.json рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рдЬрдЯрд┐рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдпрджрд┐ рдЖрдк рдореЗрдВ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдирдИ рдЦрд╛рд▓реА рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рд╣реЗрдЬреЗрдВ; рдлрд┐рд░ рдЬрд╝рд┐рдк рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ, рдЗрд╕реЗ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдкреНрд░рдпреЛрдЧреЛрдВ (рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ) рдХреА рдПрдХ рд╕реВрдЪреА рднреА рдмрдирд╛рдПрдВрдЧреЗред рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдЖрдЗрдХрди рдХреЗ рдХрд┐рди рд░реВрдкреЛрдВ рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдЗрдХрди рдХреЗ рд░реВрдкрд╛рдВрддрд░реЛрдВ рдХреЗ рдирд╛рдо "рдЖрдзрд╛рд░" рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред

рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░рд╛рдВрдб- assetsMetadata рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ assetsMetadata рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 { "navigation-bar-edit": {  "do_objectID": "86321895-37CE-4B3B-9AA6-6838BEDB0977",  ...sketch_artboard_properties,  "name": "navigation-bar-edit",  "assetname": "navigation-bar-edit",  "source": "icons_common",  "width": 48,  "height": 48  "layers": [    {      "do_objectID": "A15FA03C-DEA6-4732-9F85-CA0412A57DF4",      "name": "Path",      ...sketch_layer_properties,      "sharedStyleID": "6A3C0FEE-C8A3-4629-AC48-4FC6005796F5",      "style": {        ...        "fills": [          {            "_class": "fill",            "isEnabled": true,            "color": {              "_class": "color",              "alpha": 1,              "blue": 0.8784313725490196,              "green": 0.8784313725490196,              "red": 0.8784313725490196            },          }        ],        "miterLimit": 10,        "startMarkerType": 0,        "windingRule": 1      },    },  ],  ... }, "experiment-name/navigation-bar-edit[variant]": {  "do_objectID": "00C0A829-D8ED-4E62-8346-E7EFBC04A7C7",  ...sketch_artboard_properties,  "name": "experiment-name/navigation-bar-edit[variant]",  "assetname": "navigation-bar-edit",  "source": "icons_common",  "width": 48,  "height": 48  ... 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдПрдХ рдПрдХрд▓ рдЖрдЗрдХрди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдиреЗрд╡рд┐рдЧреЗрд╢рди-рдмрд╛рд░-рдПрдбрд┐рдЯ ) рдХрдИ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдмреНрд░рд╛рдВрдб рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рдФрд░ рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╣реА рдЖрдЗрдХрди рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рддрд╣рдд рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ : рд╣рдо рдЗрд╕ рдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдЙрд╕ рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдмреНрд░рд╛рдВрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдордиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмреНрд░рд╛рдВрдб рд╕реЗ рдЬреБрдбрд╝реА рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛:

 const SKETCH_FILES = { badoo: ['icons_common'], blendr: ['icons_common', 'icons_blendr'], fiesta: ['icons_common', 'icons_fiesta'], hotornot: ['icons_common', 'icons_hotornot'], }; 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрджреЗрд╢ рдореМрд▓рд┐рдХ рдорд╣рддреНрд╡ рдХрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдП рдЧрдП getSketchMetadata рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо assetsMetadata рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ assetsMetadata рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЧрд╣рд░рд╛ рдорд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдПрдХрд▓ assetsMetadata рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдПрдХ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "рддрд╛рд░реНрдХрд┐рдХ" рд╡рд┐рд▓рдп рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рддрд░реНрдХ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдЖрд░реЗрдЦ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдмрдирд╛рдпрд╛ рд╣реИ рдХрд┐ рдЬрдм рдПрдХ рд╣реА рдирд╛рдо (рдФрд░ рд╕рдВрднрд╡рддрдГ рдП / рдмреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдзреАрди) рдХреЗ рд╕рд╛рде рдЖрдЗрдХрдиреЛрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдмреНрд░рд╛рдВрдб рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрдВ:



рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рддреИрдпрд╛рд░ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг


рд╣рдорд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдореЗрдВ рд╕реАрдзреЗ рдЖрдЗрдХреЙрди рдлрд╛рдЗрд▓ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ (рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдкреАрдбреАрдПрдл, рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдПрд╕рд╡реАрдЬреА / рдЬреЗрдПрд╕рдПрдХреНрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░рдбреНрд░рд╛рд╡реЗрдмрд▓)ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк generateAssets[format][platform] рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд▓реЗрдХрд░ generateAssets[format][platform] рдХрд╛рд░реНрдпреЛрдВ рддрдХ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдордВрдЪ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯреВрдЯрдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рд▓рдЧрддреА рд╣реИред рдиреАрдЪреЗ рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рддрд╛рд░реНрдХрд┐рдХ рдкрд╛рдареНрдпрдХреНрд░рдо рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдирд┐рд░реНрдорд╛рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧ рдХреЛ рддреАрди рд╕рдорд╛рди рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдмреНрд░рд╛рдВрдб рдХреЗ рдЕрдиреБрд░реВрдк рд╕рд╣реА рд░рдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рд╣рдо рдЙрди рд╕рднреА рдкрд░рддреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдЬрд┐рди рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓реА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдмреНрд░рд╛рдВрдб рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реЗ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рд░рдВрдЧреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж): рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдХреА fill-rule рд╕рдВрдкрддреНрддрд┐ рдХреЛ even-odd рд╕реЗ non-zero (рдпрд╣ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА windingRule рдЧреБрдг рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 1 рдХрд╛ рдЕрд░реНрде "рд╡рд┐рд╖рдо / рд╕рдо" рд╣реИ , рдФрд░ 0 "рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ")ред

рдЗрди рдЬреЛрдбрд╝рддреЛрдбрд╝реЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдорд╛рдирдХ рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрджреНрдпрддрд┐рдд рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдХреНрд▓реЛрди рдФрд░ рдЕрджреНрдпрддрд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЦреЛрд▓рд╛, рджреЗрдЦрд╛, рд╕рдВрдкрд╛рджрд┐рдд, рд╕рд╣реЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрджрд┐)ред )ред

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

 sketchtool.run(`export slices ${cloneSketchFile} --formats=svg --scales=1 --output=${destinationFolder} --overwriting`); 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрдорд╛рдВрдб рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЧрдВрддрд╡реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рд╣рдо рдЕрднреА рдХреЗ рд▓рд┐рдП рдореВрд▓ рдкреИрдорд╛рдиреЗ рд░рдЦрддреЗ рд╣реИрдВ)ред рдпрд╣рд╛рдВ рдХреА -overwriting рд╡рд┐рдХрд▓реНрдк рд╣реИ: рдЬреИрд╕реЗ рд╣реА рд╣рдо assetsMetadata рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ ("рд▓реЙрдЬрд┐рдХрд▓" рд╕реНрдХреЗрдЪ рдлрд╛рдЗрд▓ рдХреЗ рдЕрдиреБрд░реВрдк) рдХрд╛ рдЧрд╣рд░рд╛ рдорд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рд╣рдо рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА (рдмреНрд░рд╛рдВрдб / рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд) рдореЗрдВ рдорд░реНрдЬ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╕рдВрд╕рд╛рдзрди - рдкрд░рдд рдХреЗ рдирд╛рдо рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕реЗ рдЕрдЧрд▓реЗ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рджреМрд░рд╛рди рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд┐рд░, рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдорд░реНрдЬ рдСрдкрд░реЗрд╢рди рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреБрдЫ рд╕рдВрд╕рд╛рдзрди "рднреВрдд" рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЗрдХрди рдП / рдмреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдзреАрди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдм рд╡реЗрд░рд┐рдПрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЧрдВрддрд╡реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреЗ рдкрд╛рд╕ assetsMetadata рдСрдмреНрдЬреЗрдХреНрдЯ (рдЙрдирдХреА рдХреБрдВрдЬреА рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде) рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреЗ рдЕрдиреБрд░реВрдк рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдмреЗрд╕ рд░рд┐рд╕реЛрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ ( assetsMetadata рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЧрд╣рди рд╡рд┐рд▓рдп рдХреЗ assetsMetadata )ред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдРрд╕реА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛рдж рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред iOS рдлрд╛рдЗрд▓реЗрдВ рдкреАрдбреАрдПрдл рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рд╣рдо рд╕реАрдзреЗ рд╕реНрдХреЗрдЪрдЯреВрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред JSX рдлрд╛рдЗрд▓реЗрдВ рдореЛрдмрд╛рдЗрд▓ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдФрд░ Android рдХреЗ рд▓рд┐рдП рд╡реЗрдХреНрдЯрд░рдбреНрд░рд╛рдЗрд╡ред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╣рдо рдПрд╕рд╡реАрдЬреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

IOS рдХреЗ рд▓рд┐рдП PDF


рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рдкреАрдбреАрдПрдл рдПрдХрдорд╛рддреНрд░ (?) рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬреЛ рд╡реЗрдХреНрдЯрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЖрдпрд╛рдд рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП Xcode рдФрд░ OS / iOS рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ( рдпрд╣рд╛рдВ Apple рдХреА рдкрд╕рдВрдж рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рд╣реИ )ред

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

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ / JSX рд╡реЗрдм рдлрд╝рд╛рдЗрд▓реЗрдВ


рд╡реЗрдм рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрд╕рд╡реАрдЬреАрдЖрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдПрд╕рд╡реАрдЬреА рдХреЛ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдЕрдЪрд╛рдирдХ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: "рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд░рдВрдЧреАрди" рдЖрдЗрдХрди рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ (рд░рдВрдЧреЛрдВ рдХреЛ рдЯреЛрдХрди рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡реИрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП fill рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓реА рдХреЛ рдкрд╣рд▓реЗ рдЗрд╕ рд╢реИрд▓реА рдХреЗ рдЕрдиреБрд░реВрдк рдЯреЛрдХрди рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рддреЛ рдЕрдЧрд░ рд╕реНрдХреЗрдЪ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рдмреИрдЬ-рдлреАрдЪрд░- like.svg рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

 <?xml version="1.0" encoding="UTF-8"?> <svg width="128px" height="128px" viewBox="0 0 128 128" version="1.1" xmlns="<a href="http://www.w3.org/2000/svg">http://www.w3.org/2000/svg</a>" xmlns:xlink="<a href="http://www.w3.org/1999/xlink">http://www.w3.org/1999/xlink</a>"> <!-- Generator: sketchtool 52.2 (67145) -<a href="http://www.bohemiancoding.com/sketch"> http://www.bohemiancoding.com/sketch</a> --> <title>badge-feature-like</title> <desc>Created with sketchtool.</desc> <g id="Icons" fill="none" fill-rule="evenodd">  <g id="badge-feature-like">    <circle id="circle" fill="#E71032" cx="64" cy="64" r="64">    <path id="Shape" fill="#FFFFFF" d="M80.4061668,..."></path>  </g> </g> </svg> 

рддрдм рдЕрдВрддрд┐рдо рд╕рдВрд╕рд╛рдзрди / рдмреИрдЬ-рдлреАрдЪрд░-like.js рдЖрдЗрдХрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 /* This file is generated automatically - DO NOT EDIT */ /* eslint-disable max-lines,max-len,camelcase */ const React = require('react'); module.exports = function badge_feature_like({ tokens }) { return (  <svg data-origin="pipeline" viewBox="0 0 128 128">    <g fill="none" fillRule="evenodd">      <circle fill={tokens.TOKEN_COLOR_FEATURE_LIKED_YOU} cx={64} cy={64} r={64} />      <path fill="#FFF" d="M80.4061668,..." />    </g>  </svg> ); }; 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рд╕реНрдереИрддрд┐рдХ fill рд░рдВрдЧ рдХреЛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЯреЛрдХрди рд╕реЗ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ (рд╡реЗ рд╕рдВрджрд░реНрдн <Icon/> рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИ)ред

рдпрд╣ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕реНрдХреЗрдЪ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╣реИ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП assetsMetadata рдСрдмреНрдЬреЗрдХреНрдЯ: рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдкрд░рддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рдПрдХ рдбреЛрдо рдЪрдпрдирдХрд░реНрддрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, #badge-feature-like #circle #Icons #badge-feature-like #circle ) рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрд╕рд╡реАрдЬреА рдкреЗрдбрд╝ рдореЗрдВ рдПрдХ рдиреЛрдб рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВред fill рд╡рд┐рд╢реЗрд╖рддрд╛ (рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЬрдпрдХрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

Android рдХреЗ рд▓рд┐рдП VectorDrawable рдлрд╝рд╛рдЗрд▓реЗрдВ


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

рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо svg2vectordrawable рдкрд░ рдмрд╕ рдЧрдПред рдпрд╣ рди рдХреЗрд╡рд▓ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╛рдХреА рд╕рднреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рд╣реИ), рдмрд▓реНрдХрд┐ рдмрд╛рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрдХреНрдЯрд░рдбреНрд░рд╛рдЗрд╡ рдФрд░ рдПрд╕рд╡реАрдЬреА рдЙрдирдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ: рдХреБрдЫ рдПрд╕рд╡реАрдЬреА рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реЗрдбрд┐рдпрд▓ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдФрд░ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ) рд╡реЗрдХреНрдЯрд░рдбреНрд░рд╛рдПрдмрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдХреЛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реБрдЖ (рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ 24 рд╕реЗ рд╢реБрд░реВ)ред рдЗрд╕рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг (24 рддрдХ) рдлрд┐рд▓-рдирд┐рдпрдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рдо-рд╡рд┐рд╖рдо рдореВрд▓реНрдп рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдПрдВрдбреНрд░реЙрдЗрдб 5 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реАрд▓рд┐рдП, рдкрд╣рд▓реЗ рдХреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ, рд╣рдордиреЗ рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдПрдХ non-zero рдорд╛рди рдореЗрдВ рд▓рд╛рдпрд╛ред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдбрд┐рдЬрд╛рдЗрдирд░ рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рд▓реЗрдХрд┐рди рдпрд╣ рднреВрд▓рдирд╛ рдФрд░ рдЧрд▓рддреА рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕ рдкрд░ JSON рдореЗрдВ рд╕рднреА рд╡реИрдХреНрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ non-zero рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрд╕рд╡реАрдЬреА рдХреЛ рдЖрдЗрдХрди рдирд┐рд░реНрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрдирд╛рдП рдЧрдП рд╡реЗрдХреНрдЯрд░рдбреНрд░рд╛рдПрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб 5 рдкрд░ рдЙрдкрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдорд╛рдкреНрдд рдмреИрдЬ-рдлреАрдЪрд░- like.xml рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

 <!-- This file is generated automatically - DO NOT EDIT --> <vector xmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>" android:width="128dp" android:height="128dp" android:viewportWidth="128" android:viewportHeight="128"> <path  android:fillColor="?color_feature_liked_you"  android:pathData="M64 1a63 63 0 1 0 0 126A63 63 0 1 0 64 1z" /> <path  android:fillColor="#FFFFFF"  android:pathData="M80.406 ..." /> </vector> 

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



рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкрд╛рд╕ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ: рдирд╛рдореЛрдВ рдореЗрдВ рдХреЛрдИ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдкреВрдВрдЬреА рдкрддреНрд░ рдирд╣реАрдВ! рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЖрдЗрдХрди рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдкрдбрд╝рд╛: рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ: ic_icon-name__experiment-name__variant-name ред

JSON рд╢рдмреНрджрдХреЛрд╢ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ


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

assetsMetadata рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЖрдЗрдХрди рдХреА рдПрдХ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж assetsMetadata рд╣рдо рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

  • рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, tabbar-livestream ); рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВ;
  • рдпрджрд┐ рдпрд╣ A / B рдкрд░реАрдХреНрд╖рдг (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рдпреЛрдЧ / tabbar-livestream [variant] ) рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдирд╛рдо, рдкрде, A / B рдкрд░реАрдХреНрд╖рдг рдХреЗ рдирд╛рдо рдФрд░ abtests рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд░ abtests рд╣реИрдВ
    рдЖрдзрд╛рд░ рд╕рдВрд╕рд╛рдзрди (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЯреИрдмреНрдмрд░-рд▓рд┐рд╡реЗрд╕реНрдЯреНрд░реАрдо рд╣реИ ), рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕реВрдЪреА / рдСрдмреНрдЬреЗрдХреНрдЯ (рдХреЗрд╡рд▓ "рдЖрдзрд╛рд░" рддрддреНрд╡ рдорд╛рдорд▓реЛрдВ) рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рд╣рдЯрд╛рддреЗ рд╣реИрдВ;
  • рдпрджрд┐ рдпрд╣ рдПрдХ "рднреВрдд" рд╣реИ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рд╕реВрдЪреА / рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рднреА рдореВрд▓ рдЖрдЗрдХрди (рдФрд░ рдЙрдирдХреЗ рдП / рдмреА рдкрд░реАрдХреНрд╖рдг, рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреА рд╕реВрдЪреА рд╣реЛрдЧреА, рдФрд░ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдирд╛рдо, рдЖрдХрд╛рд░, рдкрде рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░, рдпрджрд┐ рдЖрдЗрдХрди рдП / рдмреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдзреАрди рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реАред

рд╢рдмреНрджрдХреЛрд╢ рдмреНрд░рд╛рдВрдб рдФрд░ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдЧрдВрддрд╡реНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ ред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЛрдмрд╛рдЗрд▓ рд╡реЗрдм рдХреЗ рд▓рд┐рдП Blendr рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╕рдВрдкрддреНрддрд┐ редjson рдлрд╝рд╛рдЗрд▓ рд╣реИ:

 { "platform": "mw", "brand": "blendr", "assets": {    "badge-feature-like": {    "assetname": "badge-feature-like",    "path": "assets/badge-feature-like.jsx",    "width": 64,    "height": 64,    "source": "icons_common"  },  "navigation-bar-edit": {    "assetname": "navigation-bar-edit",    "path": "assets/navigation-bar-edit.jsx",    "width": 48,    "height": 48,    "source": "icons_common"  },  "tabbar-livestream": {    "assetname": "tabbar-livestream",    "path": "assets/tabbar-livestream.jsx",    "width": 128,    "height": 128,    "source": "icons_blendr",    "abtest": {      "this__is_an_experiment": {        "control": "assets/this__is_an_experiment/tabbar-livestream__control.jsx",        "variant1": "assets/this__is_an_experiment/tabbar-livestream__variant1.jsx",        "variant2": "assets/this__is_an_experiment/tabbar-livestream__variant2.jsx"      },      "a_second-experiment": {        "control": "assets/a_second-experiment/tabbar-livestream__control.jsx",        "variantA": "assets/a_second-experiment/tabbar-livestream__variantA.jsx"      }    }  },  ... } } 

рдЕрдм рд╡рд╣ рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рди рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрдкрддреНрддрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЬрд╝рд┐рдк рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдореЗрдВ рдкреИрдХ рдХрд░рдирд╛ рд╣реИред

рд╕рдВрдкреВрд░реНрдг


рдЖрд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛, рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдХреНрд▓реЛрдирд┐рдВрдЧ рдФрд░ рд╣реЗрд░рдлреЗрд░ рд╕реЗ рд▓реЗрдХрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рдВрд╕рд╛рдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддреА рд╣реИ, рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдШреЛрд╖рд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдмреНрд░рд╛рдВрдб рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж src рдФрд░ dist рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ:



рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ (JSON, ZIP рдФрд░ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЗрдВ) рдХреЛ рджреВрд░рд╕реНрде рд╕рдВрдЧреНрд░рд╣рдг рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрди рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдкреНрд░рд╢реНрди рд╕рдВрднрд╡рддрдГ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖ (рдФрд░ рд╕рдмрдХ рд╕реАрдЦрд╛)


рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рд╕реНрдХреЗрдЪ рдкрд╕рдВрдж рдерд╛ред рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдХрд░рдг рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ html-sketchapp рдЬреИрд╕реЗ рдПрдХреАрдХрд░рдг рдЙрдкрдХрд░рдг рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рдЙрдкрдХрд░рдг рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рдереЗ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдФрд░ рд╣рдорд╛рд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рдереЗред

рдореИрдВ, рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣ , рдЗрд╕ рддрд░рд╣ рдХреА (рдЖрджрд░реНрд╢) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рддреИрдпрд╛рд░ рд░рд╣рддрд╛ рд╣реВрдВ:



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

рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВред

рдпрджреНрдпрдкрд┐ рд╕реНрдХреЗрдЪ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рдирд╣реАрдВ рдЦреЛрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдмрд╣реБрдд рд╣реА рдЙрдкрдХрд░рдг рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ" рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдирд┐рд░реНрдорд╛рддрд╛ JSON рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЪрд╛рдмрд┐рдпрд╛рдБ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ, рдкрдардиреАрдп рдФрд░ рд╡реИрдЪрд╛рд░рд┐рдХ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдИ рджреБрд░реНрдШрдЯрдирд╛ рд╣реИред

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

( , ) , Sketch- Cosmos ┬л ┬╗ тАФ - Cosmos. , ( ; , тАФ ). , тАФ , , .

, Sketch- , , MVP-, . , , . , , -, тАФ , . , .

: , . , .

, , тАФ . , , , (, A/B-), Node.js Sketch.

! .


(Mobile Web), , (Android) (iOS), .

, ! .

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


All Articles