今回は、webpack-dev-server の使用手順と、webpack-dev-server を使用する際の 注意事項 について説明します。以下は実際のケースです。見てみましょう。
webpack-dev-server
webpack-dev-server は、webpack-dev-middleware を使用して webpack パッケージを提供する小さな Node.js Express サーバーです。また、それに接続するための Sock.js も備えています。サーバーのマイクロランタイムです。次の設定ファイルを見てみましょう(webpack.config.js)
var path = require("path"); module.exports = { entry:{ app:["./app/main.js"] }, output:{ path:path.resolve(dirname,"build"), publicPath:"/assets/", filename:"bundle.js" } }
基本ディレクトリ
webpack-dev-server は現在のディレクトリを指定しない限り、デフォルトではベース ディレクトリになります。webpack-dev-server --content-base build/
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script src="assets/bundle.js"></script> </body> </html>
自動更新
webpack-dev-server は、ページを自動的に更新する 2 つのモードをサポートしています。 このモードを使用するために追加の設定は必要ありません。 、次の URL 形式でアクセスするだけです
インライン モード
インライン モードでは、アクセスする URL を変更する必要はありません。有効にします。 このモードには 2 つの状況があります: 1 webpack-dev-server を起動するときコマンドラインでは、次の 2 つのことを行う必要があります:var config = require("./webpack.config.js"); var webpack = require('webpack'); var WebpackDevServer = require('webpack-dev-server'); config.entry.app.unshift("webpack-dev-server/client?http://localhost:8080/"); var compiler = webpack(config); var server = new WebpackDevServer(compiler, { contentBase:'build/', publicPath: "/assets/" }); server.listen(8080);
コマンド ライン モードでのみ有効です。
(ホットモジュール交換) ホットモジュール交換
コマンドラインでインラインモードを実行し、ホットモジュール交換を有効にします 以下に示すように、ここに --hot 命令を追加するだけで問題ありません。webpack-dev-server --content-base build --inline --hot
注:コマンドラインモードでは、コンパイルされたパッケージ(バンドル)のアクセス場所を指定するために、webpack.config.jsでoutput.publicPathを設定する必要があります
Nodejs APIでインラインモードを実行し、ホットモジュール置換を有効にします
必須。ここで次の 3 つのことを実行します:
var WebpackDevServer = require("webpack-dev-server"); var webpack = require("webpack"); var compiler = webpack({ // configuration }); var server = new WebpackDevServer(compiler, { // webpack-dev-server options contentBase: "/path/to/directory", // Can also be an array, or: contentBase: "http://localhost/", hot: true, // Enable special support for Hot Module Replacement // Page is no longer updated, but a "webpackHotUpdate" message is send to the content // Use "webpack/hot/dev-server" as additional module in your entry point // Note: this does _not_ add the `HotModuleReplacementPlugin` like the CLI option does. // Set this as true if you want to access dev server from arbitrary url. // This is handy if you are using a html5 router. historyApiFallback: false, // Set this if you want to enable gzip compression for assets compress: true, // Set this if you want webpack-dev-server to delegate a single path to an arbitrary server. // Use "**" to proxy all paths to the specified server. // This is useful if you want to get rid of 'http://localhost:8080/' in script[src], // and has many other use cases (see https://github.com/webpack/webpack-dev-server/pull/127 ). proxy: { "**": "http://localhost:9090" }, setup: function(app) { // Here you can access the Express app object and add your own custom middleware to it. // For example, to define custom handlers for some paths: // app.get('/some/path', function(req, res) { // res.json({ custom: 'response' }); // }); }, // pass [static options](http://expressjs.com/en/4x/api.html#express.static) to inner express server staticOptions: { }, // webpack-dev-middleware options quiet: false, noInfo: false, lazy: true, filename: "bundle.js", watchOptions: { aggregateTimeout: 300, poll: 1000 }, // It's a required option. publicPath: "/assets/", headers: { "X-Custom-Header": "yes" }, stats: { colors: true } }); server.listen(8080, "localhost", function() {}); // server.close();
この記事のケースを読んだ後は、この方法をマスターしたと思います。もっとエキサイティングな内容にご注目ください。その他の関連記事は php 中国語 Web サイトにあります。
推奨読書:
Vue プロジェクトを環境ごとにどのようにパッケージ化すべきか
以上がwebpack-dev-server を使用する手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。