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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

Q&A

解決済

1回答

4070閲覧

webpack-dev-serverでpublicPathを複数設定する

taqm

総合スコア65

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

0グッド

0クリップ

投稿2017/05/26 05:48

webpack-dev-serverを使用しての画面開発を行おうと思うのですが
バンドルファイルの配信先が複数になる場合にうまく動きません

現在の設定

webpack.config.jsの設定は以下になります。(実際はそれぞれにモジュールなど記載していますが割愛

lang

1const path = require('path') 2const base = { 3 context: path.join(__dirname, 'src'), 4 devServer: { 5 contentBase: 'dist', 6 port: 3000 7 } 8} 9 10module.exports = [{ 11 entry: 'js/first.js', 12 output: { 13 path: path.join(__dirname), 14 filename: 'first.bundle.js', 15 publicPath: '/js/aaa/' 16 } 17}, { 18 entry: 'js/second.js', 19 output: { 20 path: path.join(__dirname), 21 filename: 'second.bundle.js', 22 publicPath: '/js/bbb/' 23 } 24}].map(e => Object.assign({}, base, e))
起動方法

$ webpack-dev-server --inline

###現象
下記のような状態です

起動時のターミナルログ↓

Project is running at http://localhost:3000/
webpack output is served from /js/aaa/
Content not from webpack is served from dist

問題

ログから見るに
どちらか片方のoutput.publicPathしか認識できていないように見えます

いろいろな事情で配信先を一箇所にまとめることはできないためこのような形になっております
ざっくりとした状況説明ですがご教授お願い致します

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

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

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

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

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

guest

回答1

0

自己解決

自己解決いたしました
cliでWEBサーバを起動するのではなく、
expressサーバを自分で立てることで対応しました

ソースコード

プロジェクトルート/srcipts/devwebsrv.jsを用意しました

JavaScript

1const express = require('express'); 2const webpack = require('webpack'); 3const middleware = require('webpack-dev-middleware'); 4const configs = require('../webpack.config'); 5const path = require('path'); 6 7const app = express(); 8 9configs.forEach(c => { 10 const {output: {publicPath, filename}} = c; 11 const fullpath = path.join(publicPath, filename); 12 console.log(`deployed file to "${fullpath}"`); 13 app.use(middleware(webpack(c), {publicPath})); 14}); 15 16const rootPath = path.resolve(__dirname, '../dist'); 17app.use(express.static(rootPath)); 18 19app.listen(5000); 20console.log('started WebPackDevServer'); 21console.log('access to http://localhost:5000'); 22

解説

自前expressサーバを立ててミドルウェアとしてwebpackを組み込み
配信先の数だけミドルウェアを登録することで
複数のパスに対応できました

静的コンテンツの対応も忘れず

投稿2017/05/26 09:23

taqm

総合スコア65

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問