WebpackによるシンプルなJavaScriptパイプライン



webpack導入
webpack かなり心からの評判があります.あなたがWebpackを使用して確立されたプロジェクトのコードを掘り下げている場合は、それは可能性が高い最高のごまかし.撮影、ソースコードを見てくださいNext.js — 彼らはan entire directory to manage webpack configuration .
その複雑さは、大部分、その力によるものです.Webpackはたくさん行うことができます.
幸いにも、この無料でオープンソースのツールを構築する素晴らしい人々は、各バージョンを少し簡単に前よりも使いやすくするために取り組んでいる.そして今、あなたは非常に簡単に、非常に小さな設定で起動することができます.したがって、プロジェクトの最小および最も簡単にWebPackの権限を正当化することができます.

我々は何を構築するつもりです
それをしましょう.バンドルにスーパーシンプルビルドパイプラインを構築しましょうJavaScript モジュールを一緒に任意のHTMLページから読み込むことができる単一のファイルに.
ご覧くださいthe full code example あなたが動けなくなるならば、どんな点ででも.

ちゃ!
つの大きなgotcha私たちは道に沿って克服する必要があります.出力バンドルは難読化され、匿名です.つまり、デフォルトではアクセスできません.そして、たとえ我々がそうすることができたとしても、我々はそれを操縦する方法を知らないでしょう.
我々のケースでは、我々は外部の場所(HTMLファイルのような)から我々のバンドルされたコードにアクセスしたいので、我々は我々の主要輸出をロードするつもりですApp 我々がそれから主なHTMLファイルからアクセスできるオブジェクト.
特にこの例では、コールすることができますApp.Logger.sayHi() を参照してください"Hi!" コンソールに.
レッツゴー!

ステップ1:セットアップ
あなたが行く準備ができているならば、大きい!そうでなければ自由にfollow my steps to get started , 次のように注意してください.
これらは依存する依存関係です.
  • http-server
  • webpack
  • webpack-cli
  • そして、ここに追加するスクリプトですpackage.json :
    // package.json
    
    {
      // ...
      "scripts": {
        "build": "WEBPACK_ENV=production webpack",
        "dev": "webpack",
        "serve": "http-server dist -p 8000"
      }
    }
    

    Step 2 : JavaScriptファイルを追加する
    JavaScriptのカップルファイルを追加しましょう.最初に、我々のロガーsrc/modules/logger.js :
    // src/modules/logger.js
    
    const sayHi = () => {
      console.log("Hi!")
    }
    
    export { sayHi }
    
    とメインファイルsrc/main.js ), をエクスポートするLogger オブジェクト.
    // src/main.js
    
    import * as Logger from "./modules/logger"
    
    export { Logger }
    
    注:これがあなたがより多くのファイルを持っているより大きいウェブプロジェクトであるならばsrc ディレクトリは、おそらくこれらのファイルを他の入れ子になった場所に置きたいと思いますjs ディレクトリ.

    ステップ3 : Webpackの設定を追加する
    次に、WebPackの設定を追加しましょう.このコード例はコメントします.
    // webpack.config.js
    
    const path = require("path")
    // Used to determine whether to watch the files or build.
    const env = process.env.WEBPACK_ENV || "development"
    
    module.exports = {
      // The main file for the bundle.
      entry: "./src/main.js",
      output: {
        // Name of the bundle file.
        filename: "bundle.js",
        // Directory in which the bundle should be placed.
        // Here we're saying `dist/js/bundle.js` will be our bundled file.
        path: path.resolve(__dirname, "dist/js"),
        // These two library items tells webpack to make the code exported by main.js available as a variable called `App`.
        libraryTarget: "var",
        library: "App"
      },
      mode: env,
      // If we're in development mode, then watch for changes, otherwise just do a single build.
      watch: env !== "production"
    }
    
    要約
  • main.js はプライマリターゲットファイルで、dist/js/bundle.js .
  • からの輸出main.js グローバルに利用できるようになりますApp 変数.
  • WEBPACK_ENV に設定されます.production , WebPackの変更を監視します.時WEBPACK_ENVproduction , これは、束を構築し、実行を停止します.私たちは、この変数をpackage.json .

  • ステップ4 : HTMLを加える
    では、シンプルなものを加えましょうindex.html ファイルをdist ディレクトリがあります.
    <!-- dist/index.html -->
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Simple Webpack ES6 Pipeline</title>
      </head>
      <body>
        <p>Hello there.</p>
    
        <script src="/js/bundle.js"></script>
        <script>
          App.Logger.sayHi()
        </script>
      </body>
    </html>
    
    ほとんどの現実世界のケースでは、おそらく、おそらくあなたが使用している静的サイトジェネレータや他のフレームワークによって提供されるファイルをここに置くビルドステップのいくつかの並べ替えがあるでしょう.
    このケースでは、私たちは、すでに設定されていたかのようにファイルをここに配置しています.

    ステップ5:それを実行!
    実際に動作するように2つのコマンドを実行します.最初に、JavaScriptバンドルを構築します
    $ npm run build
    
    次に、Webサーバーを実行できます.
    $ npm run serve
    
    ここでlocalhost : 8000を見てブラウザのコンソールを開き、メッセージを見るべきです"Hi!" 印刷!
    JavaScriptを変更したい場合は、Webサーバーを再読み込みせずに反映してください.ランnpm run serve Webサーバを実行するnpm run dev JavaScriptの変更と再構築を監視します.

    参考文献
  • Full code example
  • それは本当にそれを取得し、ウェブパックで実行するのにかかるすべてです.シンプルな基礎からの理解とWebPackでの作業の鍵です.今、あなたはこの基地で構築することができますし、何か本当に素晴らしいとユニークなあなたに作成します.