рдХреЛрдгреАрдп рд╕реАрдПрд▓рдЖрдИ рдХреЗ рд╕рд╛рде рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ

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

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

mkdir new-project cd new-project ng new frontend --routing=true --skipGit=true --style=scss --skipTests=true 

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

рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлреНрд░рдВрдЯрдПрдВрдб рдлреЛрд▓реНрдбрд░ рдФрд░ рдкреИрдХреЗрдЬ рдкрд░ рдЬрд╛рдПрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдлрд╛рдЗрд▓ рдХрд░реЗрдВред рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВред

 "developing": "ng build --watch --deploy-url /frontend/dist/frontend/ --base-href /frontend/dist/frontend/index.html?/" 

рддреИрдирд╛рдд- deploy-url рдФрд░ base-href ред

рдлрд┐рд░, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ, рдПрдХ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдЧреАред рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛:

 | new-project/ | | extension/ | | | extension.js | | frontend/ | | | ... 

рд╕рд╛рдордЧреНрд░реА рд╡рд┐рд╕реНрддрд╛рд░ред Js

 const ANGULAR_HTML_URL = "../../frontend/dist/frontend/index.html"; chrome.browserAction.onClicked.addListener(function () { chrome.tabs.create({ url: chrome.runtime.getURL(ANGULAR_HTML_URL) }); }); 

рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░рдПрд╢рди рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рдХреЛрдгреАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдЯреИрдм рдЦреЛрд▓реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдЗрдХрдЯреНрдареЗ рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрде рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдЬреЛрдбрд╝реЗрдВ
 { "manifest_version": 2, "name": "Simple Chrome Ext", "description": "Simple Chrome Extension as an example", "version": "1.00", "author": "Bogdan", "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", "background": { "persistent": true, "scripts": ["/extension/extension.js"] }, "browser_action": { "default_title": "Chrome ext" } } 


рдЕрдм рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХреНрд░реЛрдо: // рдПрдХреНрд╕рдЯреЗрдВрд╢рди / рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ , рдбреЗрд╡рд▓рдкрд░ рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдЕрдирдкреИрдХреНрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо
рдЫрд╡рд┐

рд╕реБрд╡рд┐рдзрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ рдЧрд░реНрдо-рдкреБрдирдГ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рдордиреЗ рд╡реЙрдЪ рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде рдПрдирдЬреА рдмрд┐рд▓реНрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рдЬрдм рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╡рд┐рд╕реНрддрд╛рд░ рдкреГрд╖реНрда рдкрд░, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА рдЕрдкрдбреЗрдЯ рдЙрдард╛рдП рдЬрд╛рдПрдВрдЧреЗред рдпрд╣ рдРрдб-рдСрди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдмрд╣реБрдд рддреЗрдЬ рдХрд░рддрд╛ рд╣реИред

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

 { useHash: true } 

рдФрд░ рд╣рдо рдКрдкрд░, рдЖрдзрд╛рд░- href рдкрд░ рднреА рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ /frontend/dist/frontend/index.html?/ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдерд╛ - рдЕрдВрддрд┐рдо рд╕реНрд▓реИрд╢ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░, рдЬрдм рдЖрдк рдХреЛрдгреАрдп рдЖрд╡реЗрджрди рдореЗрдВ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдЗрд╕ рд╕рдВрдХреЗрдд рдХреЗ рдмрд┐рдирд╛ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдХреНрд░реЛрдо рдЗрдВрдЬрди рдХреЗ рд╕реНрдерд┐рд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдиреЗ URL рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ (рднрд▓реЗ рд╣реА useHash: true) рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдкреГрд╖реНрда рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ 404 рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛ рджреАред рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдореИрдВ рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рд╕реНрдерд┐рд░ рд╕рдВрдЪрд╛рд▓рди рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

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

 "prod": "ng build --sourceMap false --prod true --deploy-url /frontend/dist/frontend/ --base-href /frontend/dist/frontend/index.html?/" 

рдпрд╣ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдЧреАред

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

update.sh
 #!/bin/bash rm -rf ./prod-build mkdir -p prod-build/frontend cd frontend npm run prod cd .. cp -R ./frontend/dist ./prod-build/frontend cp -R ./extension ./prod-build cp ./manifest.json ./prod-build zip -r prod-build{.zip,} rm -rf ./prod-build 

рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

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

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

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


All Articles