{"id":2503,"date":"2025-03-24T08:47:09","date_gmt":"2025-03-23T23:47:09","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=2503"},"modified":"2025-03-24T08:47:39","modified_gmt":"2025-03-23T23:47:39","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91laravel-asset%e3%81%ae%e5%ae%8c%e5%85%a8%e3%82%ac%e3%82%a4%e3%83%89%ef%bc%9a%e5%8a%b9%e7%8e%87%e7%9a%84%e3%81%aa%e9%9d%99%e7%9a%84%e3%83%95%e3%82%a1","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=2503","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011Laravel Asset\u306e\u5b8c\u5168\u30ac\u30a4\u30c9\uff1a\u52b9\u7387\u7684\u306a\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406\u30685\u3064\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">Laravel Asset\u3068\u306f\uff1a\u57fa\u790e\u77e5\u8b58\u3068\u91cd\u8981\u6027<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406\u306b\u304a\u3051\u308bLaravel Asset\u306e\u5f79\u5272<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-2\">\u5f93\u6765\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406\u3068\u306e\u6bd4\u8f03\u3068\u30e1\u30ea\u30c3\u30c8<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-3\">Laravel Asset\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-4\">asset()\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\u306e\u6b63\u3057\u3044\u4f7f\u7528\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-5\">public\/assets\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u69cb\u9020\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-6\">\u30a2\u30bb\u30c3\u30c8\u306e\u7d76\u5bfe\u30d1\u30b9\u3068\u76f8\u5bfe\u30d1\u30b9\u306e\u4f7f\u3044\u5206\u3051<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-7\">Laravel Mix\/Vite\u3068\u306e\u9023\u643a\u306b\u3088\u308b\u52b9\u7387\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-8\">Laravel Mix\u3092\u4f7f\u7528\u3057\u305f\u30a2\u30bb\u30c3\u30c8\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3068\u6700\u9069\u5316<\/a>      <\/li>      <li>        <a href=\"#i-9\">Vite\u306b\u3088\u308b\u6700\u65b0\u306e\u30a2\u30bb\u30c3\u30c8\u30d3\u30eb\u30c9\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-10\">\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u306e\u8a2d\u5b9a\u306e\u9055\u3044<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-11\">\u5b9f\u8df5\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-12\">\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u5b9f\u88c5\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-13\">CDN\u3092\u6d3b\u7528\u3057\u305f\u30a2\u30bb\u30c3\u30c8\u914d\u4fe1\u306e\u9ad8\u901f\u5316<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-14\">\u753b\u50cf\u30fbCSS\u306e\u6700\u9069\u5316\u306b\u3088\u308b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-15\">Laravel Asset\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-16\">\u30d1\u30b9\u306e\u89e3\u6c7a\u306b\u95a2\u3059\u308b\u4e00\u822c\u7684\u306a\u554f\u984c\u3068\u89e3\u6c7a\u7b56<\/a>      <\/li>      <li>        <a href=\"#i-17\">\u30a2\u30bb\u30c3\u30c8\u304c\u6b63\u3057\u304f\u8aad\u307f\u8fbc\u307e\u308c\u306a\u3044\u5834\u5408\u306e\u5bfe\u51e6\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-18\">\u672c\u756a\u74b0\u5883\u3067\u306e\u30a2\u30bb\u30c3\u30c8\u95a2\u9023\u306e\u6ce8\u610f\u70b9<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-19\">Laravel Asset\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u5b9f\u88c5\u4f8b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-20\">\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u6226\u7565<\/a>      <\/li>      <li>        <a href=\"#i-21\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u30a2\u30bb\u30c3\u30c8\u306e\u914d\u7f6e<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-22\">\u4fdd\u5b88\u6027\u3092\u9ad8\u3081\u308b\u305f\u3081\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">Laravel Asset\u3068\u306f\uff1a\u57fa\u790e\u77e5\u8b58\u3068\u91cd\u8981\u6027<\/h2>\n\n\n\n<p>Laravel\u306b\u304a\u3051\u308b\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u958b\u767a\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u8981\u7d20\u306e\u4e00\u3064\u3067\u3059\u3002\u672c\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Laravel Asset\u306e\u57fa\u672c\u6982\u5ff5\u304b\u3089\u3001\u5b9f\u969b\u306e\u958b\u767a\u73fe\u5834\u3067\u306a\u305c\u91cd\u8981\u8996\u3055\u308c\u3066\u3044\u308b\u306e\u304b\u307e\u3067\u3001\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406\u306b\u304a\u3051\u308bLaravel Asset\u306e\u5f79\u5272<\/h3>\n\n\n\n<p>Laravel Asset\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3055\u308c\u308b\u9759\u7684\u30d5\u30a1\u30a4\u30eb\uff08CSS\u3001JavaScript\u3001\u753b\u50cf\u306a\u3069\uff09\u3092\u52b9\u7387\u7684\u306b\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30b7\u30b9\u30c6\u30e0\u3067\u3059\u3002\u4e3b\u306a\u5f79\u5272\u3068\u3057\u3066\u4ee5\u4e0b\u304c\u6319\u3052\u3089\u308c\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30b9\u89e3\u6c7a\u306e\u81ea\u52d5\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>public\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304b\u3089\u306e\u76f8\u5bfe\u30d1\u30b9\u3092\u81ea\u52d5\u751f\u6210<\/li>\n\n\n\n<li>\u74b0\u5883\u306b\u4f9d\u5b58\u3057\u306a\u3044\u4e00\u8cab\u3057\u305fURL\u306e\u751f\u6210<\/li>\n\n\n\n<li>\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u306e\u904b\u7528\u306b\u3082\u5bfe\u5fdc<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u5411\u4e0a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e88\u6e2c\u53ef\u80fd\u306a\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u306e\u96a0\u853d<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u306e\u5b9f\u73fe<\/li>\n\n\n\n<li>\u4e0d\u6b63\u30a2\u30af\u30bb\u30b9\u304b\u3089\u306e\u4fdd\u8b77<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u7ba1\u7406\u306e\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u306e\u30b5\u30dd\u30fc\u30c8<\/li>\n\n\n\n<li>\u30d6\u30e9\u30a6\u30b6\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u52b9\u7387\u7684\u306a\u5236\u5fa1<\/li>\n\n\n\n<li>\u66f4\u65b0\u306e\u5373\u6642\u53cd\u6620<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u5f93\u6765\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406\u3068\u306e\u6bd4\u8f03\u3068\u30e1\u30ea\u30c3\u30c8<\/h3>\n\n\n\n<p>\u5f93\u6765\u306e\u9759\u7684\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406\u3068\u6bd4\u8f03\u3057\u305f\u969b\u306e\u3001Laravel Asset\u3092\u4f7f\u7528\u3059\u308b\u30e1\u30ea\u30c3\u30c8\u3092\u8868\u3067\u6574\u7406\u3057\u307e\u3057\u305f\uff1a<\/p>\n\n\n<div id=\"id-8e51be14-7478-4aa1-be4a-58ce7e98deb6\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u9805\u76ee<\/th><th>\u5f93\u6765\u306e\u7ba1\u7406\u65b9\u6cd5<\/th><th>Laravel Asset<\/th><th>\u30e1\u30ea\u30c3\u30c8<\/th><\/tr><\/thead><tbody><tr><td>\u30d1\u30b9\u6307\u5b9a<\/td><td>\u624b\u52d5\u3067\u306e\u76f8\u5bfe\/\u7d76\u5bfe\u30d1\u30b9\u6307\u5b9a<\/td><td>asset()\u95a2\u6570\u306b\u3088\u308b\u81ea\u52d5\u89e3\u6c7a<\/td><td>\u74b0\u5883\u306b\u4f9d\u5b58\u3057\u306a\u3044\u5b89\u5b9a\u3057\u305f\u53c2\u7167\u304c\u53ef\u80fd<\/td><\/tr><tr><td>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406<\/td><td>\u624b\u52d5\u3067\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u4ed8\u4e0e<\/td><td>mix()\u95a2\u6570\u306b\u3088\u308b\u81ea\u52d5\u4ed8\u4e0e<\/td><td>\u30ad\u30e3\u30c3\u30b7\u30e5\u5236\u5fa1\u304c\u5bb9\u6613<\/td><\/tr><tr><td>\u958b\u767a\u74b0\u5883\u5bfe\u5fdc<\/td><td>\u74b0\u5883\u3054\u3068\u306e\u8abf\u6574\u304c\u5fc5\u8981<\/td><td>\u81ea\u52d5\u7684\u306a\u74b0\u5883\u691c\u77e5<\/td><td>\u958b\u767a\u304b\u3089\u30c7\u30d7\u30ed\u30a4\u307e\u3067\u30b7\u30fc\u30e0\u30ec\u30b9<\/td><\/tr><tr><td>\u4fdd\u5b88\u6027<\/td><td>\u30d1\u30b9\u306e\u4e00\u62ec\u5909\u66f4\u304c\u56f0\u96e3<\/td><td>\u8a2d\u5b9a\u306b\u3088\u308b\u4e00\u5143\u7ba1\u7406<\/td><td>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u30b3\u30b9\u30c8\u306e\u524a\u6e1b<\/td><\/tr><tr><td>CDN\u5bfe\u5fdc<\/td><td>\u8ffd\u52a0\u306e\u5b9f\u88c5\u304c\u5fc5\u8981<\/td><td>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u306e\u7c21\u5358\u5207\u66ff<\/td><td>\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u306e\u5411\u4e0a<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>Laravel Asset\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u958b\u767a\u8005\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u6069\u6075\u3092\u53d7\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u958b\u767a\u306e\u52b9\u7387\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u306e\u7ba1\u7406\u3092\u81ea\u52d5\u5316<\/li>\n\n\n\n<li>\u74b0\u5883\u306b\u3088\u308b\u5dee\u7570\u3092\u5438\u53ce<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u5411\u4e0a<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u904b\u7528\u306e\u5b89\u5b9a\u6027<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e00\u8cab\u3057\u305f\u30a2\u30bb\u30c3\u30c8\u53c2\u7167\u306e\u5b9f\u73fe<\/li>\n\n\n\n<li>\u30c7\u30d7\u30ed\u30a4\u6642\u306e\u30ea\u30b9\u30af\u8efd\u6e1b<\/li>\n\n\n\n<li>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u5bb9\u6613\u3055<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u6700\u9069\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u52b9\u7387\u7684\u306a\u30ad\u30e3\u30c3\u30b7\u30e5\u5236\u5fa1<\/li>\n\n\n\n<li>\u30ea\u30bd\u30fc\u30b9\u8aad\u307f\u8fbc\u307f\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>CDN\u3068\u306e\u9023\u643a\u5bb9\u6613\u6027<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u7279\u5fb4\u306b\u3088\u308a\u3001Laravel Asset\u306f\u73fe\u4ee3\u306eWeb\u958b\u767a\u306b\u304a\u3051\u308b\u5fc5\u9808\u306e\u30c4\u30fc\u30eb\u3068\u3057\u3066\u4f4d\u7f6e\u3065\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u306e\u5f37\u529b\u306a\u30c4\u30fc\u30eb\u306e\u5177\u4f53\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\">Laravel Asset\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<p>\u672c\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Laravel Asset\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001\u5177\u4f53\u7684\u306a\u30b3\u30fc\u30c9\u4f8b\u3092\u4ea4\u3048\u306a\u304c\u3089\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">asset()\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\u306e\u6b63\u3057\u3044\u4f7f\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<p>asset()\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\u306f\u3001public\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u6b63\u3057\u3044URL\u3092\u751f\u6210\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u6a5f\u80fd\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u4e3b\u306a\u4f7f\u7528\u30d1\u30bf\u30fc\u30f3\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u57fa\u672c\u7684\u306a\u4f7f\u7528\u65b9\u6cd5\n&lt;link href=\"{{ asset('css\/app.css') }}\" rel=\"stylesheet\"&gt;\n&lt;script src=\"{{ asset('js\/app.js') }}\"&gt;&lt;\/script&gt;\n&lt;img src=\"{{ asset('images\/logo.png') }}\" alt=\"Logo\"&gt;\n\n\/\/ \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u30a2\u30bb\u30c3\u30c8\u53c2\u7167\n{{ asset('vendor\/package\/styles.css') }}\n\n\/\/ \u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8ffd\u52a0\n{{ asset('css\/custom.css?v=1.0') }}\n\n\/\/ HTTTPS\u306e\u5f37\u5236\n{{ secure_asset('js\/app.js') }}<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u6642\u306e\u91cd\u8981\u306a\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30b9\u306e\u6307\u5b9a\u65b9\u6cd5<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>public\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u30eb\u30fc\u30c8\u3068\u3057\u3066\u6307\u5b9a<\/li>\n\n\n\n<li>\u30d5\u30a9\u30ef\u30fc\u30c9\u30b9\u30e9\u30c3\u30b7\u30e5\uff08\/\uff09\u3067\u59cb\u3081\u306a\u3044<\/li>\n\n\n\n<li>\u76f8\u5bfe\u30d1\u30b9\u306f\u4f7f\u7528\u3057\u306a\u3044<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8003\u616e\u4e8b\u9805<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>secure_asset()\u306e\u9069\u5207\u306a\u4f7f\u7528<\/li>\n\n\n\n<li>\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u30a8\u30b9\u30b1\u30fc\u30d7<\/li>\n\n\n\n<li>\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">public\/assets\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u69cb\u9020\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>\u52b9\u7387\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u306e\u305f\u3081\u306e\u63a8\u5968\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u3092\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public\/\n\u251c\u2500\u2500 assets\/\n\u2502   \u251c\u2500\u2500 css\/\n\u2502   \u2502   \u251c\u2500\u2500 app.css\n\u2502   \u2502   \u251c\u2500\u2500 components\/\n\u2502   \u2502   \u2514\u2500\u2500 vendors\/\n\u2502   \u251c\u2500\u2500 js\/\n\u2502   \u2502   \u251c\u2500\u2500 app.js\n\u2502   \u2502   \u251c\u2500\u2500 components\/\n\u2502   \u2502   \u2514\u2500\u2500 plugins\/\n\u2502   \u251c\u2500\u2500 images\/\n\u2502   \u2502   \u251c\u2500\u2500 common\/\n\u2502   \u2502   \u251c\u2500\u2500 icons\/\n\u2502   \u2502   \u2514\u2500\u2500 uploads\/\n\u2502   \u2514\u2500\u2500 fonts\/\n\u2514\u2500\u2500 .htaccess<\/pre>\n\n\n\n<p>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u5316\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u7a2e\u985e\u5225\u306e\u5206\u985e<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30c6\u30f3\u30c4\u30bf\u30a4\u30d7\u3054\u3068\u306b\u660e\u78ba\u306b\u5206\u96e2<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306e\u5bb9\u6613\u3055\u3092\u8003\u616e<\/li>\n\n\n\n<li>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u5411\u4e0a<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5358\u4f4d\u306e\u6574\u7406<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6a5f\u80fd\u5225\u306e\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4f5c\u6210<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u660e\u78ba\u5316<\/li>\n\n\n\n<li>\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u306e\u78ba\u4fdd<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u306e\u5b9f\u88c5<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>.htaccess\u306b\u3088\u308b\u5236\u5fa1<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u8003\u616e<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u30a2\u30bb\u30c3\u30c8\u306e\u7d76\u5bfe\u30d1\u30b9\u3068\u76f8\u5bfe\u30d1\u30b9\u306e\u4f7f\u3044\u5206\u3051<\/h3>\n\n\n\n<p>\u30a2\u30bb\u30c3\u30c8\u30d1\u30b9\u306e\u6307\u5b9a\u65b9\u6cd5\u306b\u3088\u308b\u9055\u3044\u3068\u3001\u9069\u5207\u306a\u4f7f\u3044\u5206\u3051\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u7d76\u5bfe\u30d1\u30b9\u3092\u4f7f\u7528\u3059\u3079\u304d\u5834\u5408\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30eb\u30fc\u30c8\u304b\u3089\u53c2\u7167\u3059\u308b\u5834\u5408\n&lt;link href=\"{{ asset('css\/style.css') }}\" rel=\"stylesheet\"&gt;\n\n\/\/ CDN\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\n&lt;script src=\"https:\/\/cdn.example.com\/js\/library.js\"&gt;&lt;\/script&gt;\n\n\/\/ \u5916\u90e8\u30ea\u30bd\u30fc\u30b9\u306e\u53c2\u7167\n&lt;img src=\"https:\/\/external-domain.com\/images\/picture.jpg\" alt=\"External Image\"&gt;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u76f8\u5bfe\u30d1\u30b9\u304c\u9069\u3057\u3066\u3044\u308b\u5834\u5408\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067\u306e\u53c2\u7167\uff08\u975e\u63a8\u5968\uff09\n&lt;img src=\"..\/images\/icon.png\"&gt; \/\/ \u907f\u3051\u308b\u3079\u304d\u65b9\u6cd5\n\n\/\/ \u4ee3\u308f\u308a\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u7d76\u5bfe\u30d1\u30b9\u3092\u4f7f\u7528\n&lt;img src=\"{{ asset('images\/icon.png') }}\"&gt;<\/pre>\n\n\n\n<p>\u30d1\u30b9\u6307\u5b9a\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u8003\u616e\u4e8b\u9805\uff1a<\/p>\n\n\n<div id=\"id-a488e475-77e3-436e-b9be-a7d71df9af6b\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30d1\u30b9\u6307\u5b9a\u65b9\u6cd5<\/th><th>\u30e1\u30ea\u30c3\u30c8<\/th><th>\u30c7\u30e1\u30ea\u30c3\u30c8<\/th><th>\u63a8\u5968\u3055\u308c\u308b\u4f7f\u7528\u5834\u9762<\/th><\/tr><\/thead><tbody><tr><td>\u7d76\u5bfe\u30d1\u30b9\uff08asset()\uff09<\/td><td>\u74b0\u5883\u975e\u4f9d\u5b58\u3001\u78ba\u5b9f\u306a\u53c2\u7167<\/td><td>\u3084\u3084\u5197\u9577\u306a\u8a18\u8ff0<\/td><td>\u57fa\u672c\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u53c2\u7167\u5168\u822c<\/td><\/tr><tr><td>\u76f8\u5bfe\u30d1\u30b9<\/td><td>\u7c21\u6f54\u306a\u8a18\u8ff0<\/td><td>\u74b0\u5883\u4f9d\u5b58\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u56f0\u96e3<\/td><td>\u7279\u6b8a\u306a\u30b1\u30fc\u30b9\u306e\u307f\uff08\u975e\u63a8\u5968\uff09<\/td><\/tr><tr><td>CDN URL<\/td><td>\u9ad8\u901f\u306a\u30ea\u30bd\u30fc\u30b9\u63d0\u4f9b<\/td><td>\u5916\u90e8\u4f9d\u5b58<\/td><td>\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u30e9\u30a4\u30d6\u30e9\u30ea<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u5b9f\u88c5\u6642\u306e\u6ce8\u610f\u70b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>URL\u306e\u751f\u6210<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>APP_URL\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/li>\n\n\n\n<li>HTTPS\u5bfe\u5fdc\u306e\u8003\u616e<\/li>\n\n\n\n<li>\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u8a2d\u7f6e\u3078\u306e\u5bfe\u5fdc<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u5236\u5fa1<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u6d3b\u7528<\/li>\n\n\n\n<li>Cache-Control\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30d6\u30e9\u30a6\u30b6\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u6700\u9069\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>404\u30a8\u30e9\u30fc\u306e\u9069\u5207\u306a\u51e6\u7406<\/li>\n\n\n\n<li>\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u30ed\u30b0\u306e\u6d3b\u7528<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u57fa\u672c\u7684\u306a\u5b9f\u88c5\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u7387\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Laravel Mix\u3084Vite\u3092\u4f7f\u7528\u3057\u305f\u3088\u308a\u9ad8\u5ea6\u306a\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-7\">Laravel Mix\/Vite\u3068\u306e\u9023\u643a\u306b\u3088\u308b\u52b9\u7387\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406<\/h2>\n\n\n\n<p>Laravel\u306e\u30a2\u30bb\u30c3\u30c8\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb\u3068\u3057\u3066Laravel Mix\u3068Vite\u306e2\u3064\u306e\u9078\u629e\u80a2\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u4e21\u8005\u306e\u7279\u5fb4\u3068\u52b9\u679c\u7684\u306a\u5229\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">Laravel Mix\u3092\u4f7f\u7528\u3057\u305f\u30a2\u30bb\u30c3\u30c8\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3068\u6700\u9069\u5316<\/h3>\n\n\n\n<p>Laravel Mix\u306f\u3001Webpack\u306e\u8a2d\u5b9a\u3092\u7c21\u7565\u5316\u3057\u3001\u4e00\u822c\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u3092\u5bb9\u6613\u306b\u3059\u308b\u30c4\u30fc\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u57fa\u672c\u7684\u306a\u8a2d\u5b9a\u65b9\u6cd5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ webpack.mix.js\nconst mix = require('laravel-mix');\n\nmix.js('resources\/js\/app.js', 'public\/js')\n   .sass('resources\/sass\/app.scss', 'public\/css')\n   .version(); \/\/ \u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u6709\u52b9\u5316<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u9ad8\u5ea6\u306a\u8a2d\u5b9a\u4f8b\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ webpack.mix.js\nmix.js('resources\/js\/app.js', 'public\/js')\n   .sass('resources\/sass\/app.scss', 'public\/css')\n   .postCss('resources\/css\/tailwind.css', 'public\/css', [\n     require('tailwindcss'),\n   ])\n   .copyDirectory('resources\/images', 'public\/images')\n   .browserSync('your-domain.test')\n   .sourceMaps()\n   .version();<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30bd\u30fc\u30b9\u30de\u30c3\u30d7\u306e\u751f\u6210<\/li>\n\n\n\n<li>\u958b\u767a\u74b0\u5883\u3067\u306eHot Module Replacement<\/li>\n\n\n\n<li>\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u74b0\u5883\u3067\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30a2\u30bb\u30c3\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">Vite\u306b\u3088\u308b\u6700\u65b0\u306e\u30a2\u30bb\u30c3\u30c8\u30d3\u30eb\u30c9\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3<\/h3>\n\n\n\n<p>Laravel 9\u4ee5\u964d\u3067\u5c0e\u5165\u3055\u308c\u305fVite\u306f\u3001\u3088\u308a\u9ad8\u901f\u3067\u52b9\u7387\u7684\u306a\u30d3\u30eb\u30c9\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u57fa\u672c\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ vite.config.js\nimport { defineConfig } from 'vite';\nimport laravel from 'laravel-vite-plugin';\n\nexport default defineConfig({\n    plugins: [\n        laravel({\n            input: ['resources\/css\/app.css', 'resources\/js\/app.js'],\n            refresh: true,\n        }),\n    ],\n});<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Blade\u3067\u306e\u8aad\u307f\u8fbc\u307f\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app.blade.php\n@vite(['resources\/css\/app.css', 'resources\/js\/app.js'])<\/pre>\n\n\n\n<p>Vite\u306e\u4e3b\u306a\u5229\u70b9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9ad8\u901f\u306a\u958b\u767a\u30b5\u30fc\u30d0\u30fc<\/li>\n\n\n\n<li>\u5373\u6642\u306eHMR\uff08Hot Module Replacement\uff09<\/li>\n\n\n\n<li>\u6700\u9069\u5316\u3055\u308c\u305f\u672c\u756a\u30d3\u30eb\u30c9<\/li>\n\n\n\n<li>TypeScript\u306e\u30cd\u30a4\u30c6\u30a3\u30d6\u30b5\u30dd\u30fc\u30c8<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u958b\u767a\u74b0\u5883\u3068\u672c\u756a\u74b0\u5883\u3067\u306e\u8a2d\u5b9a\u306e\u9055\u3044<\/h3>\n\n\n\n<p>\u74b0\u5883\u3054\u3068\u306e\u9069\u5207\u306a\u8a2d\u5b9a\u306f\u3001\u52b9\u7387\u7684\u306a\u958b\u767a\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306e\u4e21\u7acb\u306b\u91cd\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u958b\u767a\u74b0\u5883\u3067\u306e\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ vite.config.js\nexport default defineConfig({\n    plugins: [\n        laravel({\n            \/\/ \u958b\u767a\u74b0\u5883\u56fa\u6709\u306e\u8a2d\u5b9a\n            hmr: true,\n            watch: ['resources\/views\/**'],\n        }),\n    ],\n    server: {\n        https: false,\n        host: 'localhost',\n        port: 5173,\n    },\n});<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u672c\u756a\u74b0\u5883\u3067\u306e\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ vite.config.js\nexport default defineConfig({\n    build: {\n        \/\/ \u672c\u756a\u30d3\u30eb\u30c9\u306e\u6700\u9069\u5316\n        minify: 'terser',\n        rollupOptions: {\n            output: {\n                manualChunks: {\n                    vendor: ['vue', 'lodash'],\n                },\n            },\n        },\n    },\n});<\/pre>\n\n\n\n<p>\u74b0\u5883\u5225\u306e\u4e3b\u306a\u8a2d\u5b9a\u9805\u76ee\uff1a<\/p>\n\n\n<div id=\"id-b17f0fa8-388b-43ad-81cf-51e700f4d231\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u6a5f\u80fd<\/th><th>\u958b\u767a\u74b0\u5883<\/th><th>\u672c\u756a\u74b0\u5883<\/th><\/tr><\/thead><tbody><tr><td>\u30bd\u30fc\u30b9\u30de\u30c3\u30d7<\/td><td>\u6709\u52b9<\/td><td>\u7121\u52b9<\/td><\/tr><tr><td>\u6700\u5c0f\u5316<\/td><td>\u7121\u52b9<\/td><td>\u6709\u52b9<\/td><\/tr><tr><td>HMR<\/td><td>\u6709\u52b9<\/td><td>\u7121\u52b9<\/td><\/tr><tr><td>\u30ad\u30e3\u30c3\u30b7\u30e5<\/td><td>\u7121\u52b9<\/td><td>\u6709\u52b9<\/td><\/tr><tr><td>\u30c1\u30e3\u30f3\u30af\u5206\u5272<\/td><td>\u57fa\u672c<\/td><td>\u6700\u9069\u5316<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u74b0\u5883\u5909\u6570\u306e\u6d3b\u7528<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">export default defineConfig({\n    build: {\n        sourcemap: process.env.NODE_ENV === 'development',\n        minify: process.env.NODE_ENV === 'production',\n    },\n});<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u6761\u4ef6\u4ed8\u304d\u306e\u6a5f\u80fd\u6709\u52b9\u5316<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if (process.env.NODE_ENV === 'development') {\n    \/\/ \u958b\u767a\u74b0\u5883\u7279\u6709\u306e\u8a2d\u5b9a\n    config.server.hmr = true;\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">build: {\n    rollupOptions: {\n        output: {\n            manualChunks(id) {\n                if (id.includes('node_modules')) {\n                    return 'vendor';\n                }\n            },\n        },\n    },\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u8a2d\u5b9a\u3092\u9069\u5207\u306b\u884c\u3046\u3053\u3068\u3067\u3001\u958b\u767a\u52b9\u7387\u3068\u672c\u756a\u74b0\u5883\u3067\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u4e21\u7acb\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u5177\u4f53\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">\u5b9f\u8df5\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<p>\u30a2\u30bb\u30c3\u30c8\u306e\u6700\u9069\u5316\u306f\u3001Web\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u76f4\u63a5\u7684\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u6700\u9069\u5316\u624b\u6cd5\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\u306e\u5b9f\u88c5\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\u306f\u3001\u30a2\u30bb\u30c3\u30c8\u306e\u66f4\u65b0\u3092\u78ba\u5b9f\u306b\u30e6\u30fc\u30b6\u30fc\u306b\u5c4a\u3051\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u6280\u8853\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Laravel Mix\u3067\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ webpack.mix.js\nmix.js('resources\/js\/app.js', 'public\/js')\n   .sass('resources\/sass\/app.scss', 'public\/css')\n   .version();\n\n\/\/ Blade\u3067\u306e\u4f7f\u7528\n&lt;link href=\"{{ mix('css\/app.css') }}\" rel=\"stylesheet\"&gt;\n&lt;script src=\"{{ mix('js\/app.js') }}\"&gt;&lt;\/script&gt;<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Vite\u3067\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ vite.config.js\nexport default defineConfig({\n    build: {\n        \/\/ \u30cf\u30c3\u30b7\u30e5\u4ed8\u304d\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u751f\u6210\n        rollupOptions: {\n            output: {\n                entryFileNames: `assets\/[name].[hash].js`,\n                chunkFileNames: `assets\/[name].[hash].js`,\n                assetFileNames: `assets\/[name].[hash].[ext]`\n            }\n        }\n    }\n});\n\n\/\/ Blade\u3067\u306e\u4f7f\u7528\n@vite(['resources\/css\/app.css', 'resources\/js\/app.js'])<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30ab\u30b9\u30bf\u30e0\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ AppServiceProvider.php\npublic function boot()\n{\n    \/\/ \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u57fa\u3065\u304f\u30ad\u30e3\u30c3\u30b7\u30e5\u30d0\u30b9\u30c6\u30a3\u30f3\u30b0\n    $this-&gt;app['url']-&gt;assetVersion(config('app.version'));\n}\n\n\/\/ \u4f7f\u7528\u4f8b\n&lt;link href=\"{{ asset('css\/app.css') }}\" rel=\"stylesheet\"&gt;<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">CDN\u3092\u6d3b\u7528\u3057\u305f\u30a2\u30bb\u30c3\u30c8\u914d\u4fe1\u306e\u9ad8\u901f\u5316<\/h3>\n\n\n\n<p>CDN\uff08Content Delivery Network\uff09\u3092\u52b9\u679c\u7684\u306b\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30bb\u30c3\u30c8\u306e\u914d\u4fe1\u3092\u5927\u5e45\u306b\u9ad8\u901f\u5316\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>CDN\u8a2d\u5b9a\u306e\u57fa\u672c\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/filesystem.php\n'disks' =&gt; [\n    's3' =&gt; [\n        'driver' =&gt; 's3',\n        'key' =&gt; env('AWS_ACCESS_KEY_ID'),\n        'secret' =&gt; env('AWS_SECRET_ACCESS_KEY'),\n        'region' =&gt; env('AWS_DEFAULT_REGION'),\n        'bucket' =&gt; env('AWS_BUCKET'),\n        'url' =&gt; env('AWS_URL'),\n        'endpoint' =&gt; env('AWS_ENDPOINT'),\n        'use_path_style_endpoint' =&gt; env('AWS_USE_PATH_STYLE_ENDPOINT', false),\n    ],\n],\n\n\/\/ .env\nASSET_URL=https:\/\/cdn.yourdomain.com<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>CDN\u7528\u306e\u30a2\u30bb\u30c3\u30c8\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Console\/Commands\/DeployAssets.php\npublic function handle()\n{\n    \/\/ \u30a2\u30bb\u30c3\u30c8\u306e\u30d3\u30eb\u30c9\n    exec('npm run build');\n\n    \/\/ S3\u3078\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\n    Storage::disk('s3')-&gt;put(\n        'assets',\n        Storage::disk('public')-&gt;get('assets'),\n        'public'\n    );\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ AppServiceProvider.php\npublic function boot()\n{\n    \/\/ CDN\u304c\u5229\u7528\u3067\u304d\u306a\u3044\u5834\u5408\u306e\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\n    URL::fallback(function ($path) {\n        return asset($path);\n    });\n}<\/pre>\n\n\n\n<p>CDN\u6d3b\u7528\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n<div id=\"id-1efc8313-8ca8-472e-982f-34b171099a81\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u9805\u76ee<\/th><th>\u63a8\u5968\u8a2d\u5b9a<\/th><th>\u7406\u7531<\/th><\/tr><\/thead><tbody><tr><td>TTL<\/td><td>\u9759\u7684\u30a2\u30bb\u30c3\u30c8: 1\u5e74<\/td><td>\u9577\u671f\u30ad\u30e3\u30c3\u30b7\u30e5\u306b\u3088\u308b\u9ad8\u901f\u5316<\/td><\/tr><tr><td><\/td><td>\u52d5\u7684\u30a2\u30bb\u30c3\u30c8: 1\u6642\u9593<\/td><td>\u66f4\u65b0\u983b\u5ea6\u306b\u5fdc\u3058\u305f\u6700\u9069\u5316<\/td><\/tr><tr><td>Gzip\u5727\u7e2e<\/td><td>\u6709\u52b9<\/td><td>\u8ee2\u9001\u30b5\u30a4\u30ba\u306e\u524a\u6e1b<\/td><\/tr><tr><td>\u30d7\u30ea\u30d5\u30a7\u30c3\u30c1<\/td><td>\u91cd\u8981\u306a\u30a2\u30bb\u30c3\u30c8<\/td><td>\u521d\u671f\u8aad\u307f\u8fbc\u307f\u306e\u9ad8\u901f\u5316<\/td><\/tr><tr><td>\u30a8\u30c3\u30b8\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3<\/td><td>\u4e3b\u8981\u5730\u57df\u3092\u30ab\u30d0\u30fc<\/td><td>\u30ec\u30a4\u30c6\u30f3\u30b7\u306e\u524a\u6e1b<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u753b\u50cf\u30fbCSS\u306e\u6700\u9069\u5316\u306b\u3088\u308b\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5411\u4e0a<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u753b\u50cf\u6700\u9069\u5316\u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/image.php\nreturn [\n    'driver' =&gt; 'imagick',\n    'quality' =&gt; 85,\n    'formats' =&gt; ['webp', 'jpeg'],\n];\n\n\/\/ \u753b\u50cf\u6700\u9069\u5316\u306e\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\nclass OptimizeImages\n{\n    public function handle($request, Closure $next)\n    {\n        $response = $next($request);\n\n        if ($response-&gt;headers-&gt;get('Content-Type') === 'image\/jpeg') {\n            \/\/ \u753b\u50cf\u306e\u6700\u9069\u5316\u51e6\u7406\n            $image = Image::make($response-&gt;getContent())\n                -&gt;encode('webp', 85);\n\n            return response($image)\n                -&gt;header('Content-Type', 'image\/webp');\n        }\n\n        return $response;\n    }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>CSS\u306e\u6700\u9069\u5316\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ postcss.config.js\nmodule.exports = {\n    plugins: [\n        require('autoprefixer'),\n        require('cssnano')({\n            preset: ['default', {\n                discardComments: {\n                    removeAll: true,\n                },\n                normalizeWhitespace: false,\n            }]\n        })\n    ]\n};<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u753b\u50cf\u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Blade component\n&lt;picture&gt;\n    &lt;source\n        srcset=\"{{ asset('images\/hero-mobile.webp') }}\"\n        media=\"(max-width: 640px)\"\n        type=\"image\/webp\"&gt;\n    &lt;source\n        srcset=\"{{ asset('images\/hero-desktop.webp') }}\"\n        media=\"(min-width: 641px)\"\n        type=\"image\/webp\"&gt;\n    &lt;img\n        src=\"{{ asset('images\/hero-fallback.jpg') }}\"\n        alt=\"Hero image\"\n        loading=\"lazy\"&gt;\n&lt;\/picture&gt;<\/pre>\n\n\n\n<p>\u6700\u9069\u5316\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u753b\u50cf\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>WebP\u5f62\u5f0f\u306e\u63a1\u7528<\/li>\n\n\n\n<li>\u9069\u5207\u306a\u5727\u7e2e\u7387\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6\u753b\u50cf\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u9045\u5ef6\u8aad\u307f\u8fbc\u307f\u306e\u6d3b\u7528<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>CSS\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u672a\u4f7f\u7528CSS\u306e\u524a\u9664<\/li>\n\n\n\n<li>\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u5727\u7e2e<\/li>\n\n\n\n<li>\u30e1\u30c7\u30a3\u30a2\u30af\u30a8\u30ea\u306e\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u30af\u30ea\u30c6\u30a3\u30ab\u30ebCSS\u306e\u62bd\u51fa<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>JavaScript\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30b3\u30fc\u30c9\u5206\u5272<\/li>\n\n\n\n<li>Tree Shaking<\/li>\n\n\n\n<li>\u975e\u540c\u671f\u8aad\u307f\u8fbc\u307f<\/li>\n\n\n\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u30d0\u30f3\u30c9\u30ea\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u6700\u9069\u5316\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30b5\u30a4\u30c8\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5927\u5e45\u306b\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u4e00\u822c\u7684\u306a\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-15\">Laravel Asset\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h2>\n\n\n\n<p>\u958b\u767a\u4e2d\u3084\u672c\u756a\u74b0\u5883\u3067\u906d\u9047\u3059\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u4e00\u822c\u7684\u306a\u554f\u984c\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u30d1\u30b9\u306e\u89e3\u6c7a\u306b\u95a2\u3059\u308b\u4e00\u822c\u7684\u306a\u554f\u984c\u3068\u89e3\u6c7a\u7b56<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u76f8\u5bfe\u30d1\u30b9\u306e\u89e3\u6c7a\u30a8\u30e9\u30fc\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9\n&lt;img src=\"images\/logo.png\"&gt; \/\/ \u76f8\u5bfe\u30d1\u30b9\u306b\u3088\u308b\u53c2\u7167\n\n\/\/ \u6b63\u3057\u3044\u89e3\u6c7a\u65b9\u6cd5\n&lt;img src=\"{{ asset('images\/logo.png') }}\"&gt; \/\/ asset()\u95a2\u6570\u306e\u4f7f\u7528<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067\u306e\u554f\u984c\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/app.php\nreturn [\n    \/\/ \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d9\u30fc\u30b9URL\u3092\u6b63\u3057\u304f\u8a2d\u5b9a\n    'url' =&gt; env('APP_URL', 'http:\/\/localhost'),\n\n    \/\/ \u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30b9\u3092\u8a2d\u5b9a\n    'asset_url' =&gt; env('ASSET_URL', null),\n];\n\n\/\/ .htaccess \u3067\u306e\u8a2d\u5b9a\nRewriteEngine On\nRewriteBase \/subdirectory\nRewriteRule ^(.*)$ public\/$1 [L]<\/pre>\n\n\n\n<p>\u3088\u304f\u3042\u308b\u554f\u984c\u3068\u89e3\u6c7a\u65b9\u6cd5\uff1a<\/p>\n\n\n<div id=\"id-c65e6860-a28b-49e9-890a-7b48c0a07723\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u554f\u984c<\/th><th>\u539f\u56e0<\/th><th>\u89e3\u6c7a\u65b9\u6cd5<\/th><\/tr><\/thead><tbody><tr><td>404\u30a8\u30e9\u30fc<\/td><td>\u30d1\u30b9\u306e\u4e0d\u4e00\u81f4<\/td><td>asset()\u95a2\u6570\u306e\u4f7f\u7528\u3068APP_URL\u306e\u78ba\u8a8d<\/td><\/tr><tr><td>Mixed Content<\/td><td>HTTPS\u306e\u8a2d\u5b9a\u4e0d\u5099<\/td><td>secure_asset()\u306e\u4f7f\u7528\u307e\u305f\u306fHTTPS\u306e\u5f37\u5236<\/td><\/tr><tr><td>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u554f\u984c<\/td><td>\u30d6\u30e9\u30a6\u30b6\u30ad\u30e3\u30c3\u30b7\u30e5<\/td><td>\u30d0\u30fc\u30b8\u30e7\u30cb\u30f3\u30b0\u306e\u5b9f\u88c5<\/td><\/tr><tr><td>\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3<\/td><td>\u6a29\u9650\u8a2d\u5b9a\u306e\u4e0d\u5099<\/td><td>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u6a29\u9650\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u30a2\u30bb\u30c3\u30c8\u304c\u6b63\u3057\u304f\u8aad\u307f\u8fbc\u307e\u308c\u306a\u3044\u5834\u5408\u306e\u5bfe\u51e6\u6cd5<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u95a2\u9023\u306e\u554f\u984c\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\nphp artisan cache:clear\nphp artisan view:clear\nphp artisan route:clear\nphp artisan config:clear\n\n# \u30a2\u30bb\u30c3\u30c8\u306e\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\nnpm run dev\n# \u307e\u305f\u306f\nnpm run build<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u306e\u554f\u984c\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># storage:link\u30b3\u30de\u30f3\u30c9\u306e\u5b9f\u884c\nphp artisan storage:link\n\n# \u624b\u52d5\u3067\u306e\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u4f5c\u6210\nln -s \/path\/to\/laravel\/storage\/app\/public \/path\/to\/laravel\/public\/storage<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u74b0\u5883\u8a2d\u5b9a\u306e\u30c7\u30d0\u30c3\u30b0\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u30d1\u30b9\u306e\u78ba\u8a8d\u7528\u30c7\u30d0\u30c3\u30b0\u30b3\u30fc\u30c9\ndd([\n    'app_url' =&gt; config('app.url'),\n    'asset_url' =&gt; config('app.asset_url'),\n    'current_path' =&gt; request()-&gt;path(),\n    'base_path' =&gt; base_path(),\n    'public_path' =&gt; public_path(),\n]);<\/pre>\n\n\n\n<p>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30b9\u30c6\u30c3\u30d7\u30d0\u30a4\u30b9\u30c6\u30c3\u30d7\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u78ba\u8a8d<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if (File::exists(public_path('css\/app.css'))) {\n    \/\/ \u30d5\u30a1\u30a4\u30eb\u306f\u5b58\u5728\u3059\u308b\n} else {\n    \/\/ \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u3089\u306a\u3044\n    Log::error('Asset file not found: css\/app.css');\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u306e\u78ba\u8a8d<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u78ba\u8a8d\nls -la public\/css\nls -la public\/js\n\n# \u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u306e\u4fee\u6b63\nchmod -R 755 public\/css\nchmod -R 755 public\/js\nchown -R www-data:www-data public\/<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30ed\u30b0\u306e\u78ba\u8a8d<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Providers\/AppServiceProvider.php\npublic function boot()\n{\n    \/\/ \u30a2\u30bb\u30c3\u30c8\u306e\u8aad\u307f\u8fbc\u307f\u3092\u30ed\u30b0\u306b\u8a18\u9332\n    \\URL::macro('assetWithLog', function ($path) {\n        \\Log::info(\"Asset requested: \" . $path);\n        return asset($path);\n    });\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u672c\u756a\u74b0\u5883\u3067\u306e\u30a2\u30bb\u30c3\u30c8\u95a2\u9023\u306e\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u672c\u756a\u74b0\u5883\u7528\u306e\u30d3\u30eb\u30c9\nnpm run build\n\n# \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\nphp artisan optimize:clear\n\n# \u8a2d\u5b9a\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\nphp artisan config:cache\nphp artisan route:cache\nphp artisan view:cache<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Apache\u8a2d\u5b9a\u4f8b\n&lt;Directory \/var\/www\/html\/public&gt;\n    Options -Indexes +FollowSymLinks\n    AllowOverride All\n    Require all granted\n\n    # \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d8\u30c3\u30c0\u30fc\u306e\u8ffd\u52a0\n    Header set X-Content-Type-Options \"nosniff\"\n    Header set X-Frame-Options \"SAMEORIGIN\"\n    Header set X-XSS-Protection \"1; mode=block\"\n&lt;\/Directory&gt;<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Exceptions\/Handler.php\npublic function register()\n{\n    $this-&gt;renderable(function (\\Exception $e) {\n        if ($e instanceof \\Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException) {\n            \/\/ \u30a2\u30bb\u30c3\u30c8404\u30a8\u30e9\u30fc\u306e\u30ed\u30b0\u8a18\u9332\n            if (str_starts_with(request()-&gt;path(), 'assets\/')) {\n                Log::warning('Asset not found: ' . request()-&gt;path());\n            }\n        }\n    });\n}<\/pre>\n\n\n\n<p>\u672c\u756a\u74b0\u5883\u3067\u306e\u4e3b\u306a\u6ce8\u610f\u70b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u30e2\u30fc\u30c9\u306e\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30a2\u30bb\u30c3\u30c8\u306e\u5727\u7e2e<\/li>\n\n\n\n<li>\u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d5\u30a1\u30a4\u30eb\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u306e\u78ba\u8a8d<\/li>\n\n\n\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d8\u30c3\u30c0\u30fc\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u8868\u793a\u306e\u5236\u5fa1<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u76e3\u8996\u3068\u30ed\u30ae\u30f3\u30b0<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30ed\u30b0\u306e\u76e3\u8996<\/li>\n\n\n\n<li>\u30a2\u30af\u30bb\u30b9\u30ed\u30b0\u306e\u5206\u6790<\/li>\n\n\n\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0<\/li>\n<\/ul>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u624b\u6cd5\u3092\u7406\u89e3\u3057\u3001\u9069\u5207\u306b\u5bfe\u5fdc\u3059\u308b\u3053\u3068\u3067\u3001\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u306b\u95a2\u3059\u308b\u554f\u984c\u3092\u52b9\u7387\u7684\u306b\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-19\">Laravel Asset\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u5b9f\u88c5\u4f8b<\/h2>\n\n\n\n<p>\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u306b\u306f\u3001\u614e\u91cd\u306a\u8a08\u753b\u3068\u4f53\u7cfb\u7684\u306a\u30a2\u30d7\u30ed\u30fc\u30c1\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3068\u5177\u4f53\u7684\u306a\u5b9f\u88c5\u4f8b\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u5927\u898f\u6a21\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306e\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u6226\u7565<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305f\u30a2\u30bb\u30c3\u30c8\u69cb\u9020\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ \u6a5f\u80fd\u5225\u306e\u30a2\u30bb\u30c3\u30c8\u30d0\u30f3\u30c9\u30eb\nreturn [\n    'modules' =&gt; [\n        'admin' =&gt; [\n            'js' =&gt; [\n                'admin\/core.js',\n                'admin\/dashboard.js',\n                'admin\/users.js',\n            ],\n            'css' =&gt; [\n                'admin\/styles.css',\n                'admin\/dashboard.css',\n            ],\n        ],\n        'frontend' =&gt; [\n            'js' =&gt; [\n                'front\/main.js',\n                'front\/components.js',\n            ],\n            'css' =&gt; [\n                'front\/styles.css',\n                'front\/responsive.css',\n            ],\n        ],\n    ],\n];<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u52d5\u7684\u30a2\u30bb\u30c3\u30c8\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ App\/Helpers\/AssetLoader.php\nclass AssetLoader\n{\n    public static function loadModuleAssets($module)\n    {\n        $config = config(\"assets.modules.{$module}\");\n\n        return [\n            'js' =&gt; collect($config['js'])-&gt;map(fn($path) =&gt; mix($path)),\n            'css' =&gt; collect($config['css'])-&gt;map(fn($path) =&gt; mix($path)),\n        ];\n    }\n}\n\n\/\/ Blade\u3067\u306e\u4f7f\u7528\n@foreach(AssetLoader::loadModuleAssets('admin')['css'] as $css)\n    &lt;link href=\"{{ $css }}\" rel=\"stylesheet\"&gt;\n@endforeach<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316\u6226\u7565\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/assets.php\nreturn [\n    'optimization' =&gt; [\n        'combine_modules' =&gt; env('ASSET_COMBINE_MODULES', true),\n        'minify' =&gt; env('ASSET_MINIFY', true),\n        'defer_loading' =&gt; env('ASSET_DEFER_LOADING', true),\n        'preload_critical' =&gt; env('ASSET_PRELOAD_CRITICAL', true),\n    ],\n];<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u30a2\u30bb\u30c3\u30c8\u306e\u914d\u7f6e<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30a2\u306a\u30a2\u30bb\u30c3\u30c8\u30a2\u30af\u30bb\u30b9\u5236\u5fa1\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ routes\/web.php\nRoute::middleware(['auth', 'verified'])-&gt;group(function () {\n    Route::get('secure-assets\/{path}', function ($path) {\n        $fullPath = storage_path(\"app\/secure-assets\/{$path}\");\n\n        if (!Storage::exists(\"secure-assets\/{$path}\")) {\n            abort(404);\n        }\n\n        return response()-&gt;file($fullPath);\n    })-&gt;where('path', '.*');\n});<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30a2\u30bb\u30c3\u30c8\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Http\/Middleware\/ValidateAssetAccess.php\nclass ValidateAssetAccess\n{\n    public function handle($request, Closure $next)\n    {\n        $path = $request-&gt;path();\n\n        if (str_starts_with($path, 'assets\/')) {\n            \/\/ MIME\u30bf\u30a4\u30d7\u306e\u691c\u8a3c\n            $extension = pathinfo($path, PATHINFO_EXTENSION);\n            $allowedTypes = ['css', 'js', 'jpg', 'png', 'svg'];\n\n            if (!in_array($extension, $allowedTypes)) {\n                abort(403);\n            }\n\n            \/\/ \u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u306e\u5236\u9650\n            $maxSize = config('assets.max_size', 5 * 1024 * 1024); \/\/ 5MB\n            if (filesize(public_path($path)) &gt; $maxSize) {\n                abort(413);\n            }\n        }\n\n        return $next($request);\n    }\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d8\u30c3\u30c0\u30fc\u306e\u5b9f\u88c5\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ app\/Http\/Middleware\/SecureHeaders.php\nclass SecureHeaders\n{\n    public function handle($request, Closure $next)\n    {\n        $response = $next($request);\n\n        $response-&gt;headers-&gt;set('Content-Security-Policy', \"\n            default-src 'self';\n            script-src 'self' 'unsafe-inline' 'unsafe-eval';\n            style-src 'self' 'unsafe-inline';\n            img-src 'self' data: https:;\n        \");\n\n        return $response;\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">\u4fdd\u5b88\u6027\u3092\u9ad8\u3081\u308b\u305f\u3081\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u63a8\u5968\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">resources\/\n\u251c\u2500\u2500 assets\/\n\u2502   \u251c\u2500\u2500 js\/\n\u2502   \u2502   \u251c\u2500\u2500 modules\/\n\u2502   \u2502   \u2502   \u251c\u2500\u2500 admin\/\n\u2502   \u2502   \u2502   \u2514\u2500\u2500 front\/\n\u2502   \u2502   \u251c\u2500\u2500 components\/\n\u2502   \u2502   \u2514\u2500\u2500 utilities\/\n\u2502   \u251c\u2500\u2500 css\/\n\u2502   \u2502   \u251c\u2500\u2500 modules\/\n\u2502   \u2502   \u251c\u2500\u2500 components\/\n\u2502   \u2502   \u2514\u2500\u2500 themes\/\n\u2502   \u2514\u2500\u2500 images\/\n\u2502       \u251c\u2500\u2500 content\/\n\u2502       \u251c\u2500\u2500 layout\/\n\u2502       \u2514\u2500\u2500 icons\/\n\u251c\u2500\u2500 views\/\n\u2514\u2500\u2500 lang\/<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u5358\u4f4d\u306e\u8a2d\u5b9a\u7ba1\u7406\uff1a<\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ config\/modules\/admin.php\nreturn [\n    'assets' =&gt; [\n        'entry_points' =&gt; [\n            'dashboard' =&gt; [\n                'js' =&gt; 'modules\/admin\/dashboard.js',\n                'css' =&gt; 'modules\/admin\/dashboard.css',\n            ],\n            'users' =&gt; [\n                'js' =&gt; 'modules\/admin\/users.js',\n                'css' =&gt; 'modules\/admin\/users.css',\n            ],\n        ],\n        'shared' =&gt; [\n            'js' =&gt; 'modules\/admin\/core.js',\n            'css' =&gt; 'modules\/admin\/core.css',\n        ],\n    ],\n];<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30a2\u30bb\u30c3\u30c8\u306e\u7ba1\u7406\u65b9\u91dd<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30e2\u30b8\u30e5\u30fc\u30eb\u5225\u306e\u5206\u96e2<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u660e\u78ba\u5316<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306e\u7d71\u4e00<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u6700\u9069\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u9045\u5ef6\u8aad\u307f\u8fbc\u307f\u306e\u5b9f\u88c5<\/li>\n\n\n\n<li>\u91cd\u8981\u306a\u30a2\u30bb\u30c3\u30c8\u306e\u512a\u5148<\/li>\n\n\n\n<li>\u30d0\u30f3\u30c9\u30eb\u30b5\u30a4\u30ba\u306e\u6700\u9069\u5316<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u6027\u306e\u5411\u4e0a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u547d\u540d\u898f\u5247\u306e\u7d71\u4e00<\/li>\n\n\n\n<li>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u6574\u5099<\/li>\n\n\n\n<li>\u81ea\u52d5\u5316\u30d7\u30ed\u30bb\u30b9\u306e\u5c0e\u5165<\/li>\n<\/ul>\n\n\n\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u898f\u6a21\u5225\u306e\u63a8\u5968\u30a2\u30d7\u30ed\u30fc\u30c1\uff1a<\/p>\n\n\n<div id=\"id-2a25ea66-59c4-4de2-869f-3d81435fb092\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u898f\u6a21<\/th><th>\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u6226\u7565<\/th><th>\u63a8\u5968\u30c4\u30fc\u30eb<\/th><th>\u6ce8\u610f\u70b9<\/th><\/tr><\/thead><tbody><tr><td>\u5c0f\u898f\u6a21<\/td><td>\u30b7\u30f3\u30d7\u30eb\u306a\u69cb\u9020<\/td><td>Laravel Mix<\/td><td>\u57fa\u672c\u7684\u306a\u6700\u9069\u5316<\/td><\/tr><tr><td>\u4e2d\u898f\u6a21<\/td><td>\u30e2\u30b8\u30e5\u30fc\u30eb\u5316<\/td><td>Vite<\/td><td>\u30ad\u30e3\u30c3\u30b7\u30e5\u6226\u7565<\/td><\/tr><tr><td>\u5927\u898f\u6a21<\/td><td>\u30de\u30a4\u30af\u30ed\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9<\/td><td>Webpack + Vite<\/td><td>\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u30bb\u30ad\u30e5\u30a2\u3067\u52b9\u7387\u7684\u306a\u30a2\u30bb\u30c3\u30c8\u7ba1\u7406\u30b7\u30b9\u30c6\u30e0\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u898f\u6a21\u3084\u8981\u4ef6\u306b\u5fdc\u3058\u3066\u3001\u3053\u308c\u3089\u306e\u65b9\u91dd\u3092\u9069\u5207\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":{"0":"post-2503","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2503"}],"version-history":[{"count":2,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2503\/revisions"}],"predecessor-version":[{"id":2505,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2503\/revisions\/2505"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2503"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2503"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}