Skip to content
uupaa edited this page Oct 24, 2015 · 9 revisions

package.jsonwebmodule プロパティ以下を修正することで、ビルドするソースコードの追加や、設定の変更が可能です。

webmodule 以下に browser, worker, node, nw, el を記述すると、その環境に最適化されたビルドが可能になります。

追加するソースコードがある場合は webmodule.{{environment}}.source:[ ... ] に追加します。environment には環境名(browser, worker, node, nw, el)が入ります。配列の順番はそのままソースコードの読み込み順位(優先順位)になります。

{
  "webmodule": {
    "develop": false,
    "labels":  ["@dev", "@xbrowser"],           // ビルド対象のソースコードに存在する @label の一覧です
                                                //   (@label の追加はプログラマーの仕事です)
    "browser": {                                // ブラウザ向けの最適化設定
      "source": ["lib/MyExample.js"],           // ビルド対象のソースコードを指定します
      "output": "release/MyExample.b.min.js",   // ビルド結果の出力先を指定します
    },
    "worker": {                                 // Worker向けの最適化設定
      "source": ["lib/MyExample.js"],           // ビルド対象のソースコードを指定します
      "output": "release/MyExample.w.min.js",   // ビルド結果の出力先を指定します
    },
    "node": {                                   // Node.js向けの最適化設定
      "source": ["lib/MyExample.js"],           // ビルド対象のソースコードを指定します
      "output": "release/MyExample.n.min.js",   // ビルド結果の出力先を指定します
    },
    "nw": {                                     // NW.js向けの最適化設定
      "source": ["lib/MyExample.js"],           // ビルド対象のソースコードを指定します
      "output": "release/MyExample.nw.min.js",  // ビルド結果の出力先を指定します
    },
    "el": {                                     // Electron向けの最適化設定
      "source": ["lib/MyExample.js"],           // ビルド対象のソースコードを指定します
      "output": "release/MyExample.el.min.js",  // ビルド結果の出力先を指定します
    }
  },
  "dependencies": {                             // MyExample.js から利用するモジュールを指定します
                                                // ここで指定したモジュールは、`npm run sync` コマンドで
                                                // node_modules 以下にインストールされ、
                                                // `npm run build` のビルド対象となります
    "uupaa.useragent.js": ""
  },
  "devDependencies": {                          // MyExample.js がユニットテストで必要とするモジュールを指定します
                                                // ここで指定したモジュールは、`npm run sync` コマンドで
                                                // node_modules 以下にインストールされますが `npm run build` でビルドされません
                                                // あくまでデバッグ用として一時的に使用したい場合に指定します
    "uupaa.xxxxx.js": ""
  }
}

worker, node, nw, el 向けに最適化する必要がないモジュールは、worker: { ... }, node: { ... }, nw: { ... }, el: { ... } を削ってください。

以下のようにすると、Browser と nw.js 用に最適化ビルドを行い、Worker, Node.js, Electron 用のビルドを行わないモジュールになります。

  "webmodule": {
    "develop": false,
    "label": ["@dev"],
    "browser": {
      "source": ["lib/MyExample.js"],
      "output": "release/MyExample.b.min.js"
    },
    "nw": {
      "source": ["lib/MyExample.js"],
      "output": "release/MyExample.nw.min.js"
    }
  },

npm run minnpm run build コマンドを実行すると output に指定されたファイル(MyExample.b.min など)を生成します。

ビルドに失敗したら

ビルドに失敗した場合は、中間ファイル(release/.Minify.tmp.js) を確認してください

package.json に修正を加える事で、ビルドセッティングを変更できます。

デフォルトの設定は以下のようになっています。ビルドオプションを参照してください。

  "scripts": {
    "min":          "node ../WebModule/run/minify.js --verbose --strict --keep --pretty",
    "build":        "node ../WebModule/run/minify.js --verbose --strict --module"
  }

上級者向け設定

以下の設定は、上級者向けです。最初のうちは読み飛ばしてください。

Develop

develop: true を指定すると通常のモジュールではなく、開発用のツールとして扱われるようになり、リリースビルド時にソースコードがマージされないようになります。

Label

label: ["@dev"] には lib/MyExample.js に埋め込んだ {@ラベル ... }@ラベル を列挙します。

以下のように、ユーザが独自のラベル @mix を使っている場合は、package.json の lable に @mix を追加してください。

//{@mix
for (...) {
}
//}@mix