ミニフィケーションがなぜ機能しないのか、その原因を探るのに最も苦労している。
ウェブ上の多くの提案に従って、関数の前に配列オブジェクトを介してプロバイダを注入しましたが、まだ "Unknown provider: aProvider <- a"
規則的な。
var app = angular.module('bpwApp', ['ui.bootstrap', 'ui', 'myTabs'])
.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){
$routeProvider.
when('/', {templateUrl: 'partials/home.jade', controller: HomeCtrl});
$locationProvider.html5Mode(true);
}])
最小化
var app = angular.module('bpwApp', ['ui.bootstrap', 'ui', 'myTabs'])
.config(['$routeProvider', '$locationProvider', function(a, b){
a.
when('/', {templateUrl: 'partials/home.jade', controller: HomeCtrl});
b.html5Mode(true);
}])
何か提案があれば、ぜひお願いします。
以前、Grunt.js Uglify プラグインでこの問題に遭遇したことがあります。
オプションの1つは、mangleです。
uglify: {
options: {
mangle: false
},
これは、文字列のようなものに対して正規化関数を実行し、それらを最小化するものだと思います。
例えば
angular.module("imgur", ["imgur.global","imgur.album"]);
となる。
angular.module("a", ["a.global","a.album"]);
無効にする --- この機能はAngularと相性が悪いです。
より正確に言うと、@JoshDavidMiller が説明している通りです。
Uglifyの mangle
は変数のようなものだけをマングルしており、これが実際にAngularJSの問題を引き起こしています。つまり、問題はインジェクションにあり、定義にはないのです。
function MyCtrl($scope, myService)は
function MyCtrl(a, b)` にマングルされますが、文字列の中のサービス定義は決して変更されることはないはずです。
uglify
を実行する前に ng-min
を実行すると解決する。AndrewM96 さんの提案する ng-min
は正しいです。
アラインメントと空白は、AngularだけでなくUglifyでも重要です。