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

рдкрд┐рдЫрд▓реА рдмрд╛рд░, рд╣рдордиреЗ рд╕реНрдХреЗрдЪ рдлрд╛рдЗрд▓реЗрдВ рддреИрдпрд╛рд░ рдХреА рдереАрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЖрдЗрдХрди рд╕рд╣реА рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдФрд░ рд╕рд╣реА рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдереЗред рдпрд╣ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдмрд╛рд░реА рд╣реИред
рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдФрд░ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЧреБрдЬрд░реЗред рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рдиреЗрддрд╛
рдирд┐рд╣рд┐рд▓ рд╡рд░реНрдорд╛ рдХреЗ рдмрд╛рдж , рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдиреАрдВрд╡ рд░рдЦреА, рдХреБрдВрдЬреА рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛, рдореИрдВрдиреЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХреА рдЬрд┐рд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдФрд░ рдХрдИ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЖрдЬ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рд░реВрдк рдореЗрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
Node.js рдкрд░ рд▓рд┐рдЦреА рдЧрдИ рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдХрд╛рдлреА рд╕реАрдзреА рд╣реИ: рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдХреЗ, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП (рдпрд╣ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ) рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рд╕реНрдХреЗрдЪ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд▓реЗ рдореЗрдВ рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд░рддрд╛ рд╣реИред
- рдмреНрд░рд╛рдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдЯреЛрдХрди рд▓реЗрддреЗ рд╣реИрдВ (рд╣рдореЗрдВ рд░рдВрдЧ рдореВрд▓реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
- рдХреНрд▓реЛрди рдмреНрд░рд╛рдВрдб-рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреЗрдЪ рдлрд╛рдЗрд▓реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЖрдВрддрд░рд┐рдХ JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирдЬрд╝рд┐рдк рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдорд╛рди (рдмрд╛рдж рдореЗрдВ) рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреА рд╣реИрдВред
- рдЗрди JSON рдлрд╝рд╛рдЗрд▓реЛрдВ ( document.json , meta.json рдФрд░ рдкреГрд╖реНрдареЛрдВ / pageUniqueID.json ) рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИред рд╣рдо рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ / рдЖрдЗрдХрди рдХреА рд╕реВрдЪреА рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
- 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), .
, ! .