機械翻訳について

最適化のカスタマイズ

ビジュアル・アプリケーションステージおよび公開の場合、各Webアプリケーションのリソースが最適化され、パフォーマンスが向上します。 最適化されたリソース・バンドルに含めるリソースおよび除外するリソースを指定する場合は、独自の最適化構成をbuild.jsonファイルに定義できます。

最適化には、デフォルトで、正規表現.*(\\.(js|json|html|css))$と一致するすべてのapplicationリソースが、vb-app-bundleという名前の最適化されたリソース・バンドルに含まれます。 このプロセス中に、アプリケーション・スタイルシート、HTMLおよびJSONファイルが最小化され、ビジュアル・アプリケーションステージおよび公開になるように準備する埋込みビルド・サーバーに作成されるRequireJSバンドルが最小化されます。 この構成をカスタマイズしてリソースを追加および除外するには、アプリケーションステージングおよび公開する前に、build.jsonファイルを作成し、独自の構成を定義する必要があります。
  1. ナビゲータでwebアプリケーションを選択し、「設定」をクリックしてアプリケーション・レベルの設定エディタを開きます。
  2. 「最適化」の下の「ビルド構成の作成」をクリックして、build.jsonファイルを作成します。 ファイルがすでに存在する場合は、「ビルド構成を開く」をクリックします。
  3. build.jsonエディタでビルド構成を定義して、最適化されたリソース・バンドルに含めるリソースおよび除外するリソースを指定します。
    optimize要素の下にあるbuild.jsonの最適化を定義するために使用する必要があるスキーマを次に示します:
    プロパティ 説明
    optimize.suppress (Boolean) trueに設定すると、最適化が無効になります。 プロパティが定義されていないか、falseに設定されている場合、最適化はパッケージング・ビルド・ステップで定義された「アプリケーションの最適化」設定、または個々のオプティマイザ設定(optimize.require-js.enableなど)によって決定されます。 デフォルトはfalseです。つまり、ビジュアル・アプリケーションステージおよび公開になる前に、リソースが常に最適化されます。

    build.jsonを手動で編集するのではなく、設定エディタから最適化を無効にする方が簡単です。 「最適化の抑制」を参照してください。

    optimize.require-js (Object)リソース・バンドルを生成するRequireJSオプティマイザの構成。
    optimize.require-js.enable (Boolean) RequireJSモジュール・バンドルを作成するかどうか。 デフォルトでは有効です。
    optimize.require-js.vb-bundles-config (Object)次のスキーマを使用して定義されたカスタムRequireJSモジュール・バンドル:
    <bundle_name>
      find
      ids
        modules
          find
          ids
        exclude
          find
          ids
    optimize.require-js.vb-bundles-config.bundle_name.modules このスキーマを使用して定義したバンドルに追加する必要があるモジュール:
      find
      ids
    optimize.require-js.vb-bundles-config.bundle_name.exclude このスキーマを使用して定義された、バンドルに追加する必要のないモジュール:
      find
      ids
    除外は、すべてのバンドル・モジュールに適用されます。これには、推移的なモジュール依存関係の後に追加されたものも含まれます。
    optimize.require-js.vb-bundles-config.bundle_name.[exclude|modules].find 一致する最適化されたアプリケーション・リソースに使用される正規表現パターンのリスト。 感嘆符(!)で始まる正規表現は負とみなされ、これらのパターンに一致するリソースは含まれません。
    optimize.require-js.vb-bundles-config.bundle_name.[exclude|modules].ids モジュールIDのリスト
    optimize.require-js.emptyPaths (Array) emptyに設定されているRequireJSパスのカンマ区切りリスト。 このようにして、この依存関係を無視する必要がある(また、そのサブ依存関係を再帰的にトラバースしてはいけない)ことを示します。
    optimize.css (Object)スタイル・シートを最適化するかどうか。 デフォルトでは有効です。
    optimize.css.enable (Boolean)スタイル・シートの最適化を無効にするには、falseに設定します。
    optimize.html (Object) HTMLファイルを最適化するかどうか。 デフォルトでは有効です。
    optimize.html.enable (Boolean)HTMLファイル最適化を無効にするには、falseに設定します。
    optimize.json (Object) JSONファイルを最適化するかどうか。 デフォルトでは有効です。
    optimize.json.enable (Boolean) JSONファイル最適化を無効にするには、falseに設定します。

    デフォルト構成およびその他の構成例は、「build.jsonの最適化構成」を参照してください。

    ヒント:

    Gruntタスクを使用してアプリケーションを最適化する場合は、既存のGrunt構成をGruntfile.jsからbuild.jsonに移行する必要があります。これにより、ビジュアル・アプリケーションステージおよび公開のときに、リソースの最適化中にカスタム構成を有効にできます。 build.jsonの構成は、Gruntfile.jsで定義したものと似ています。 「Gruntfile.js構成をbuild.jsonに移行する方法」を参照してください。

build.jsonの最適化構成

build.jsonファイル(/webApps/app_name/settingsの下にあり、app-level設定エディタからアクセス可能)を作成する場合、アプリケーションの最適化されたリソース・バンドルに含めたり除外したりするリソースを指定できます。

すべてのリソースを含めて、特定のリソースを除外

最適化には、デフォルトで、正規表現.*(\\.(js|json|html|css))$と一致するすべてのアプリケーション・リソースが、vb-app-bundleという名前の最適化されたリソース・バンドルに含まれます。 デフォルト設定を次に示します:
{
    "optimize": {
        "require-js": {
            "vb-bundles-config": {
                "vb-app-bundle": {
                    "modules": {
                        "find": [
                            ".*(.(js|json|html|css))$"
                        ]
                    }
                }
            }
        }
    }
}
この構成を拡張すると、たとえば、アプリケーションのソースの一部である一部のサードパーティ・ライブラリ(bcrypt.minおよびcrypto-js (deal-registrationフローに対して定義)を除外できます。 この場合、build.jsonを定義する方法を次に示します:
{
    "optimize": {
        "require-js": {
            "vb-bundles-config": {
                "vb-app-bundle": {
                    "modules": {
                        "find": [
                            ".*(.(js|json|html|css))$",
                            "!bcrypt.min",
                            "!^flows/deal-registration/crypto-js"
                        ]
                    }
                }
            }
        }
    }
}

find要素は、アプリケーションと一致する正規表現のリストを指定します。 感嘆符(!)で始まる正規表現は負とみなされるため、これらのパターンに一致するリソースは含まれません。

特定のリソースを含めるおよび除外

次に、vb-app-bundleに特定のリソースを追加する例を示しますが、fontawesomeファイルは除外します:
{
    "optimize": {
        "require-js": {
            "vb-bundles-config": {
                "vb-app-bundle": {
                    "modules": {
                        "find": [
                            "app-flow.js",
                            "^build",
                            "!^build/components/oj-odcs/2.5.1/fontawesome",
                            "^flows/",
                            "^pages/",
                            "^resources/strings",
                            "^resources/css",
                            "^services/"
                        ]
                    }
                }
            }
        }
    }
}

アプリのリソースをバンドルに編成する方法は、アプリケーションの構造と、アプリケーションの起動に不可欠なものによって異なります。 アプリケーションで実際に必要なものが1つのバンドルに配置され、残りが1つ以上の他のバンドルに配置されるように、リソースをバンドルしてみてください。

次に、3つの特定のRequireJSモジュール・バンドルを作成するために定義された構成の例を示します:
  • アプリケーション・フローdashboardに属するすべてのリソースに対して1つ。 このバンドルには、flows/dashboardパターンに一致するすべてのファイル(つまり、flows/dashboardディレクトリに格納されているすべてのページ、モジュール、リソースおよびネストされたフロー)が含まれます。 ただし、ページ・モジュールの1つによって参照されるhelpersモジュールは除外されます。
  • アプリケーション・フローcustomersに属するリソースに2つ。 この場合、参照されるhelpersモジュールと同様に、ネストされたフロー(後で別のバンドルに配置される)は除外されます。
  • customersフローのネストされたフローに属するリソースに3つ。

これらの3つのバンドルに加えて、4番目のbaseバンドルには、シェル・ページ、ライブラリ、スタイルなどのアプリケーション・リソースが含まれます。 このバンドルは、参照されるhelpersモジュールを明示的に追加します。

{
    "optimize": {
        "require-js": {
            "vb-bundles-config": {
             "dashboard": {
                "modules": {
                    "find": [
                        "flows/dashboard"
                    ]
                },
                 "exclude": {
                    "ids": [
                        "helpers"
                    ]
                }                
            },
             "customers": {
                 "modules": {
                    "find": [
                        "flows/customers",
                        "!flows/customers/flows"
                    ]
                },
                 "exclude": {
                    "ids": [
                        "helpers"
                    ]
                }
            },
             "customers-nested": {
                 "modules": {
                    "find": [
                        "flows/customers/flows"
                    ]
                }
            },
             "base": {
                 "modules": {
                    "find": [
                        "app-flow.js",
                        "^pages/",
                        "resources/strings",
                        "resources/css"
                    ],
                    "ids": [
                        "helpers"
                        ]
                    }
                }
            }
        }
    }
}

emptyPathsを使用したリソースの除外

アプリケーションにサード・パーティ・ライブラリを参照するカスタムwebコンポーネント(ckeditorを参照するresources/components/mycomponentなど)が含まれる場合、そのコンポーネントをバンドルに含める必要があり、サードパーティ・ライブラリは含めない場合があります。 これを行うには、build.json"!^resources/components/mycomponent/ckeditor"を使用します。 ただし、バンドル内のコードがライブラリを参照する場合、ライブラリは引き続き含まれます。 カスタムwebコンポーネント自体のコード、またはこのライブラリを参照するファイル内のコード(たとえば、'resources/components/mycomponent/ckeditor'を参照するバンドルに含まれるapp-flow.jsファイルのコード)です。 このような場合、emptyPaths要素をbuild.jsonに追加して、依存性を無視し、そのサブ依存関係を再帰的に走査しないようにできます:
{
    "optimize": {
        "require-js": {
            "emptyPaths": [
                "ckeditor"
            ],
            "vb-bundles-config": {
              "dashboard": {
                "modules": {
                    "find": [
                        "flows/dashboard"
                    ]
                },
                 "exclude": {
                    "ids": [
                        "helpers"
                    ]
                }                
            },
             "base": {
                 "modules": {
                    "find": [
                        "app-flow.js",
  ...
複数のライブラリを無視するemptyPaths定義の例を次に示します:
 {
   "optimize": {
        "require-js": {
            "emptyPaths": [
                "ckeditor",
                "ckeditor-jquery"
            ],
  ...

Gruntfile.js構成をbuild.jsonに移行する方法

Gruntタスクを使用してアプリケーションを最適化する場合は、Gruntfile.jsファイルにすでに定義した構成をbuild.jsonに移行することが重要です。 build.jsonにこの定義がない場合、アプリケーションステージングおよび公開のときにデフォルトで発生するリソース最適化には、カスタマイズは含まれません。

  1. ナビゲータでwebアプリケーションを選択し、「設定」をクリックしてアプリケーション・レベルの設定エディタを開きます。
  2. 「最適化」の下の「ビルド構成を開く」をクリックして、applicationbuild.jsonファイルを開きます。 このオプションが表示されない場合は、「ビルド構成の作成」をクリックしてbuild.jsonファイル(/webApps/app_name/settingsの下)を作成し、設定エディタ内から開きます。
  3. このスニペットをbuild.jsonに追加します:
    {
        "optimize": {
            "require-js": {
                "emptyPaths": [
                ],
                "vb-bundles-config": {
                }
            }
        }
    }
  4. applicationGruntfile.jsファイル(ソース・ビューの「ビジュアル・アプリケーション」のルートにあります)を開きます。
  5. 次の構成をGruntfile.jsからbuild.jsonに移動します:
    • vb-require-bundle.options.bundlesの内容をGruntfile.jsからbuild.jsonoptimize.require-js.vb-bundles-configに移動します。
    • vb-require-bundle.options.emptyPathsの内容(定義されている場合)を、Gruntfile.jsからbuild.jsonoptimize.require-js.emptyPathsに移動します。
    JSONスキーマの構文を必ず修正してください。 たとえば、Gruntfile.jsbuild.jsonの構成を並べて比較します:
    Gruntfile.js build.json
    'use strict';
    module.exports = (grunt) => {
        require('load-grunt-tasks')(grunt);
        grunt.initConfig({
            "vb-require-bundle": {
                options: {
                    emptyPaths: [
                        'ckeditor',
                    ],
                    "bundles": {
                        "vb-app-bundle": {
                            "modules": {
                                "find": [
                                    "^flows/",
                                    "^pages/",
                                    "^resources/",
                                    "!^services/",
                                ],
                            },
                        },
                    },
                },
            },
        });
    };
    {
        "optimize": {
            "require-js": {
                "emptyPaths": [
                    "ckeditor"
                ],
                "vb-bundles-config": {
                    "vb-app-bundle": {
                        "modules": {
                            "find": [
                                "^flows/",
                                "^pages/",
                                "^resources/",
                                "!^services"
                            ]
                        }
                    }
                }
            }
        }
    }
  6. Gruntfile.jsonからvb-require-bundleを削除すると、ファイルは次のようになります:
    module.exports = (grunt) => {
        require('load-grunt-tasks')(grunt);
    };