1

問題

正常に完了する grunt ビルドがあり、他のライブラリに依存するものを除いて、ほとんどのライブラリが利用可能です。

たとえば、underscore-string は underscore に依存し、_.string として underscore 名前空間にアタッチされますが、その関数はアプリでは使用できません。これは、moment.range と同じ問題です。

RequireJS 構成

{
 "name": "app",
 "dir": "client-compress",
 "baseUrl": "client-dist",
 "preserveLicenseComments": true,
 "paths": {
   "underscore":     "bower_components/underscore/underscore",
   "backbone":       "bower_components/backbone/backbone-min",
   "requireLib":     "bower_components/requirejs/require",
   "moment":         "bower_components/moment/moment",
   "string":         "bower_components/underscore.string/lib/underscore.string",
   "momentrange":    "bower_components/moment-range/lib/moment-range"
    ...       
 },
 "shim": {
   "backbone":   { "exports": "Backbone", "deps": ["underscore", "jquery"] },
   "underscore": { "exports": "_" },      
   "string": { "deps": ["underscore"]},
   "moment": {"exports": "moment"},
   "momentrange": {"deps": ["moment"]}
   ...                
 },
  "include": [
   "requireLib",
   "underscore",
   "moment",
   "string",
   "backbone",
   "momentrange"
   ...
  ]
}

ノート

アプリケーションは最適化されていなくても問題なく動作し、文字列と範囲のライブラリは両方とも最終的なビルド ファイルに含まれています。私の推測では、ビルド ファイルが読み込まれた後は、アンダースコア ライブラリとモーメント ライブラリをアタッチできません。

4

1 に答える 1

1

解決しました - アンダースコア文字列は「string」ではなく「underscore.string」として含める必要があります

構成には次のパスがあります

"paths": {
 "underscore":         "bower_components/underscore/underscore",
 "backbone":           "bower_components/backbone/backbone-min",
 "requireLib":         "bower_components/requirejs/require",
 "moment":             "bower_components/moment/moment",
 "underscore.string":  "bower_components/underscore.string/lib/underscore.string",
 "momentrange":        "bower_components/moment-range/lib/moment-range"
  ...       
},
于 2013-09-28T18:32:38.887 に答える