Javascript ng注释控件依赖项名称

Javascript ng注释控件依赖项名称,javascript,angularjs,model-view-controller,dependency-injection,bundling-and-minification,Javascript,Angularjs,Model View Controller,Dependency Injection,Bundling And Minification,抱歉,如果标题是错误的,因为我无法找出它的最佳标题。如果你愿意,你可以改变它 常量文件 /* global lodash:false */ (function () { 'use strict'; angular .module('blocks.router') .constant('lodash', _); })(); /* @ngInject */ function routeHelper($location, $rootScop

抱歉,如果标题是错误的,因为我无法找出它的最佳标题。如果你愿意,你可以改变它

常量文件

/* global lodash:false */
(function () {
    'use strict';

    angular
        .module('blocks.router')
        .constant('lodash', _);  
})(); 
 /* @ngInject */

function routeHelper($location, $rootScope, $state, _, logger, routeHelperConfig)

 routeHelper.$inject = ['$location', '$rootScope', '$state', '_', 'logger', 'routeHelperConfig'];
routerHelper.js文件

/* global lodash:false */
(function () {
    'use strict';

    angular
        .module('blocks.router')
        .constant('lodash', _);  
})(); 
 /* @ngInject */

function routeHelper($location, $rootScope, $state, _, logger, routeHelperConfig)

 routeHelper.$inject = ['$location', '$rootScope', '$state', '_', 'logger', 'routeHelperConfig'];
问题

手动注入依赖项可以很好地工作

routeHelper.$inject = ['$location', '$rootScope', '$state', 'lodash', 'logger', 'routeHelperConfig'];
但当我运行ng annotate cmdline(ng annotate——单引号——添加routeHelper.js-o routeHelper.js)时,它会创建以下内容

routeHelper.$inject = ['$location', '$rootScope', '$state', '_', 'logger', 'routeHelperConfig'];
你可以看到ng annoate吐出“u”而不是“lodash”的区别

问题


我如何控制ng annotate不将“lodash”替换为“u”

ng annotate试图尽可能聪明,但它无法读懂你的心思!:-)如果您的参数的名称与注入的服务/常量/其他名称不同,那么您只需为要运行的程序指定$inject数组即可。如果不这样做,程序将不会运行(缩小或不缩小)


因此,您必须这样做,然后只需手动添加$inject数组。只要您使用
--add
而不是
--add--remove

运行它,ng annotate将保持它的完整性。。手动注射阵列工作良好。这样做的目的是使其自动化,同时避免用“lodash”替换为“1”<代码>角度模块(foo).常量(“lodash”,u),然后函数routeHelper(lodash){}
或2<代码>角度.module(foo).constant(““,)”然后是函数routeHelper(){}或3。提供显式注释数组。