рдбрд╛рд░реНрдЯ рдореЗрдВ рдХреЛрдб рдЬрдирд░реЗрд╢рдиред рднрд╛рдЧ 1. рдореВрд▓ рдмрд╛рддреЗрдВ

рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЖрд▓рд╕реА рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдо рдкреНрд░рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ ред рдХреЛрдИ рднреА рдПрдХ рд╣реА рдЪреАрдЬ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдердХрд╛рдК, рдЙрдмрд╛рдК рд╣реИ, рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд░рдЪрдирд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИред рдЙрд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП, рд╣рдо рдЕрдХреНрд╕рд░ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рд╕рдорд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдФрд░ рдкреНрд░рднрд╛рд╡реА рд╣реИрдВред рдФрд░ рдпреЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИрдВ !


https://yougottobekidding.wordpress.com/2012/02/18/geeks-and-repetitive-tasks/


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


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


рдбрд╛рд░реНрдЯ рдФрд░ рдХреЛрдб рдЬрдирд░реЗрд╢рди: рдХрд┐рдлрд╛рдпрддреА рдЙрдкрдХрд░рдг


рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:



source_gen


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


source_gen рджреЛ рдЕрдореВрд░реНрдд рдЬрдирд░реЗрдЯрд░ рдХрдХреНрд╖рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:


  • Generator : рдЬрдм рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХрд╛ рджреМрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдЬрд╝рд┐рдЯ рдХрд┐рдП рдЧрдП рдиреЛрдб рдпрд╛ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдЖрдкрдХрд╛ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд╣реИред
  • GeneratorForAnnotation : рдпрд╣ рдХреНрд▓рд╛рд╕ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЬреЗрдирд░реЗрдЯрд░ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк "рдПрдиреЛрдЯреЛрдЯ" рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП рдХреЗрд╡рд▓ рдиреЛрдбреНрд╕ рдХрд╛ рджреМрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдмрд╛рдХреА рдХреЛрдб рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдкрдХреЛ Builder рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЬрдирд░реЗрдЯрд░ рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реЛрдЧрд╛ред рддреАрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:


  • рдпрджрд┐ рдЖрдк рдПрдХ partial рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ SharedPartBuilder рдЪрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред "рднрд╛рдЧ" рдЖрдкрдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдИ рдбрд╛рд░реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред SharedPartBuilder рдПрдХреНрд╕рдЯреЗрдВрд╢рди .g.dart рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред
  • рдпрджрд┐ рдЖрдк "рд╣рд┐рд╕реНрд╕рд╛" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк PartBuilder рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП .my_file.dart ред
  • рдпрджрд┐ рдЖрдк рдПрдХ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдмреБрдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ LibraryBuilder ред

build_runner


рдпрд╣ рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ рдЬрдирд░реЗрдЯрд░ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕реНрддрд░ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 pub run build_runner <command> 

<command> рд╕реНрдерд╛рди рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:


  • build : рдПрдХ рдмрд╛рд░ рдкреАрдврд╝реА рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
  • watch : рдПрдХ рдбреЗрдореЙрди рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЬреЗрдирд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
  • serve : рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
  • test : рдкреАрдврд╝реА рдХреЛ рдПрдХ рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╕рд╛рдЭрд╛ рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ pub run test --precompiled <merged-output-dir> рдЪрд▓рд╛рддрд╛ рд╣реИ - pub run test --precompiled <merged-output-dir> ред

source_gen рдХрд╛рдо source_gen рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ buil.yaml рдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛рдиреА рд╣реЛрдЧреА, рдЬреЛ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред


рдбрд╛рд░реНрдЯ рдореЗрдВ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдбрд╛рд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рд╕рд┐рджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХреЛрдб рдкреАрдврд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:



рдЕрдзрд┐рдХ ...


рджреВрд╕рд░рд╛ рднрд╛рдЧ рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕рднреА TODO рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдХреЛрдб рдкреАрдврд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред

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


All Articles