ホームページ >ウェブフロントエンド >jsチュートリアル >webpack-dev-server の使い方の詳細な説明 (コード付き)

webpack-dev-server の使い方の詳細な説明 (コード付き)

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-20 14:08:022768ブラウズ

今回は、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 つのモードをサポートしています。

  1. iframe モード (ページは iframe に配置され、変更が発生すると再ロードされます)

  2. inline モード (webpack のクライアント エントリを追加します) dev-sever をバンドルに追加)

どちらのモードもホット モジュール置換をサポートしています。ホット モジュール置換の利点は、ページのリロードではなく、更新部分のみが置換されることです。

iframe モード

このモードを使用するために追加の設定は必要ありません。 、次の URL 形式でアクセスするだけです

http://«host»:«port»/webpack -dev-server/«path»

例: http://localhost:8080/webpack- dev-server/index.html.

インライン モード

インライン モードでは、アクセスする URL を変更する必要はありません。有効にします。 このモードには 2 つの状況があります:

1 webpack-dev-server を起動するときコマンドラインでは、次の 2 つのことを行う必要があります:

  1. webpack.config のコマンドラインに --inline コマンドを追加します

  2. js

2 に devServer:{inline:true} を追加しますNode.js API で webpack-dev-server を起動するには、次の 2 つのことも行う必要があります:

  1. webpack-dev-server Inline オプションには設定がないため、webpack-dev-server/client? を追加する必要があります。 http://«path»:«port»/ を webpack 設定のエントリ エントリ ポイントに追加します。

  2. src="http:// localhost:8080/webpack-dev-server.js"><をスクリプトします。 ;/script>HTML ファイルに追加します

  3.  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 つのことを実行します:

    webpack.config.js のエントリ オプションに webpack/hot/dev-server を追加します。
  1. webpack.config の plugins オプションに new webpack.HotModuleReplacementPlugin() を追加します。 .js
  2. webpack-dev-server の設定を追加します: hot:true
  3. webpack-dev-server の設定オプション
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 プロジェクトのパッケージ化手順の詳細な説明

Angular2 を使用する際は Dom の誤解を避けるようにしてください

以上がwebpack-dev-server の使い方の詳細な説明 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。