質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

5216閲覧

HtmlWebpackPlugin が生成するリンクのパスを絶対パス指定したい

zirou

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/11/28 11:34

HtmlWebpackPlugin が生成するリンクのパスを絶対パス指定したい

javascriptをwebpackでビルドしています。
HtmlWebpackPluginを使ってindex.htmlはテンプレートから生成しています。
また、index.htmlが読み込むjsファイルはリビジョン番号つけてます。([name][hash].js)

HtmlWebpackPluginがindex.htmlの末尾にjsを参照するscriptタグを挿入してくれるのですが、
そのパスが相対パス(src="script.js")になっており、絶対パス(src="/script.js")で出力させたいです。
(SPAを開発しているので、ドメイン配下のURLでアクセスされた時にスクリプトのパスが絶対パスでないと読み込めないです。)

フォルダの構成は以下の通りです。

├── public
│ └── js この中に全部出力
├── src
│ ├── html
│ │ └── index.html
│ └── js
│ └── index.jsx

webpackの設定とテンプレートのhtml

javascript

1webpack.config.js 2 3const HtmlWebpackPlugin = require("html-webpack-plugin"); 4 5module.exports = [ 6 { 7 context: path.join(__dirname, 'src'), 8 entry: { 9 app: './js/index.jsx' 10 }, 11 output: { 12 path: path.join(__dirname, 'public/js'), 13 filename: '[name]-[hash].js' 14 }, 15 module: { 16 rules: [ 17 { 18 test: /.js[x]?$/, 19 exclude: /node_modules/, 20 loader: "babel-loader", 21 query:{ 22 presets: ['react', 'env'] 23 } 24 }, 25 { test: /.html$/, loader: "html-loader" } 26 ] 27 }, 28 resolve: { 29 modules: [path.resolve(__dirname, "src/js"), "node_modules"], 30 extensions: ['.js', '.jsx'] 31 }, 32 plugins: [ 33 new HtmlWebpackPlugin({ 34 template: "./html/index.html" 35 }) 36 ], 37 } 38];

html

1index.html 2 3<!DOCTYPE html> 4<html lang="en"> 5<head> 6 <title>CarL</title> 7</head> 8<body> 9<noscript> 10 You need to enable JavaScript to run this app. 11</noscript> 12<div id="root"></div> 13</body> 14</html>

詳しい方いましたらよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のかたちでできませんでしょうか。

JavaScript

1// webpack.config.js 2 3const ASSET_PATH = process.env.ASSET_PATH || '/'; 4 5module.exports = [ 6 // 省略 7 output: { 8 path: path.join(__dirname, 'public/js'), 9 publicPath: ASSET_PATH, /* この行を追加 */ 10 filename: '[name]-[hash].js' 11 }, 12 // 省略 13];

参考リンク
公式ドキュメント該当箇所

投稿2018/11/28 13:24

NozomuIkuta

総合スコア1260

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zirou

2018/11/28 13:31

NozomuIkutaさん回答ありがとうございます。 ご教授いただいた通り設定するとうまくいきました。 ありがとうございました。
NozomuIkuta

2018/11/28 13:35

解決したようでよかったです。
zirou

2018/11/28 13:39

htmlを出力しているのがHtmlWebpackPluginだと思ったので必死にHtmlWebpackPluginのドキュメント読んでました。webpackで設定なんですね。今後に活かしたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問