ホームページ > 記事 > ウェブフロントエンド > webpack+dev+serverの使い方の詳しい説明
今回は 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" } }
ここでは、ソース ファイルを app フォルダーの下に置き、webpack を使用してビルドの下に Bundle.js にパッケージ化されています。
注: webpack-dev-server は独立した NPM パッケージであり、npm install webpack-dev-server を通じてインストールできます。
基本ディレクトリ
webpack-dev-server は現在のディレクトリを指定しない限り、デフォルトではベース ディレクトリになります。
webpack-dev-server --content-base build/
上記のコマンドはコマンド ラインで実行され、ビルド ディレクトリがルート ディレクトリとして使用されることに注意してください: webpack- dev-server によって生成されたパッケージ。は実際のディレクトリではなくメモリ内に配置されます
基本ディレクトリに新しいindex.htmlファイルを作成し、ブラウザにhttp://localhostと入力します: 8080訪問
<!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 つのモードをサポートしています。
iframe モード (ページは iframe に配置され、変更が発生すると再ロードされます)
インライン モード (webpack-dev のクライアント エントリを追加します) -サーバーをバンドルに)
どちらのモードもホット モジュール置換をサポートしています。ホット モジュール置換の利点は、ページの再読み込みではなく、更新された部分のみが置換されることです。
iframe モード
このモードの使用には追加の設定は必要ありません。 , 次の URL 形式でアクセスするだけです
http://«host»:«port»/webpack-dev -server/«path»
例: http://localhost:8080/webpack-dev-server /index.html.
インライン モード
インライン モードでは、アクセスする URL を変更する必要はありません。これを有効にします。 2 つのモードがあります:
1 コマンド ラインから webpack-dev-server を起動する場合、以下が必要です
--inline コマンドをコマンドラインに追加します
webpack.config.js に devServer:{inline:true} を追加します
2 で webpack-dev-server を起動するときNode.js API では、次の 2 つのことも行う必要があります:
webpack-dev-server の設定にインライン オプションがないため、 webpack-dev-server/client?http://« を追加する必要があります。 path»:«port»/ を webpack 設定のエントリ エントリ ポイントに追加します。
は、
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);
上記のコードを Node.js で実行します。
注: Webpack 設定の devSever 設定項目は、コマンド ライン モードでのみ有効です。
(ホットモジュール交換) ホットモジュール交換
コマンドラインでインラインモードを実行し、ホットモジュール交換を有効にします
以下に示すように、ここに --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 サイトにあります。 推奨読書:
Operation AngularJS をゼロから作成してアプリケーションのモジュール化を実装します
以上がwebpack+dev+serverの使い方の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。