angularjs - grunt 的 "bower_concat"和 "angular-i18n"的正确使用方法

标签 angularjs gruntjs group-concat

如果不使用 grunt 的“concat”和“bower_concat”,则 angular-i18n 的使用方式如下:

 <html ng-app>
    <head>
        ...
       <script src="angular.js"></script>
       <script src="i18n/angular-locale_de-de.js"></script>
        ...
    </head>
 </html>

(根据此处:https://docs.angularjs.org/guide/i18n)

但是...当然:我正在使用 concatbower_concat
我这样使用它们:

  1. 首先,我使用 Bower_concat 并创建 build/bower-concat.js

    注意: Bower_concat 读取 bower_components 中每个子目录的每个 Bower.json它连接所有主文件。

    注2:“angular-18n”的bower.json有"ignore": ["**/.*", ...

  2. 然后我将所有 js(我的 Controller 等)连接到 build/inouse-concat.js

  3. 最后我连接 bower-concat.jsinhouse-concat.js进入all-concat.js
  4. <script src="build/all-concat.js"></script>



所以我认为我可以在第三步中包含相应的区域设置“angular-i18n/angular-locale_de-de.js ”,如下所示:

  // inhouse js with bower's js with angular's i18n into one file
  allJsConcat: {
    src: ['build/bower-concat.js', 'bower_components/angular-i18n/angular-locale_de-de.js', 'build/inhouse-concat.js',],
    dest: 'build/all-concat.js',
  }

但这不起作用。我得到:
Uncaught ReferenceError: require is not defined

问题:您建议如何将 grunt、concat 和 Bower_concat 与 Angular 的 locale js 一起使用?我做错了什么?

最佳答案

该死,我讨厌回答自己的问题,因为急于提问......

无论如何,这有效:

Gruntfile.js

    bower_concat: {
        all: {
            dest: 'build/bower-concat.js',
            cssDest: 'build/bower-concat.css',
            exclude: [
                'angular-i18n'
            ],
            bowerOptions: {
                relative: false
            }
        }
    },

    concat: {
        ...

        allJsConcat: {
            src: ['build/bower-concat.js', 'bower_components/angular-i18n/angular-locale_de-de.js', 'build/inhouse-concat.js',],
            dest: 'build/all-concat.js',
        }
    }

技巧是使用 grunt-bower-concatexclude 参数。

还有一个 mainFiles 参数,我认为它也可以解决问题:

mainFiles

Some Bower components don’t list their main files or (more likely) don’t have bower.json file at all. In this case bower-concat will try to guess main file but sometimes it can’t or choose wrong one. You could explicitly define main files for that components.

所以我认为使用这个也可以:

 mainFiles: {
     'angular-i18n': 'angular-locale_de-de.js',
 }

不进行“三文件连接”(因此更优雅)

关于angularjs - grunt 的 "bower_concat"和 "angular-i18n"的正确使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28861211/

相关文章:

javascript - 为什么我无法从 AngularJS 甚至纯 JavaScript 获取 __RequestVerificationToken 的值?

node.js - 'El Capitan' 的 rootless 是否破坏了旧的 grunt 配置?

javascript - Grunt 在任务执行之间执行自定义脚本

多个表上的mysql group_concat

mysql - 具有多态连接的 Laravel 查询生成器不适用于 SQLite

MySQL用分组连接没有完美连接

javascript - 云代码功能不保存数据

javascript - 跟踪 eval 中的当前行号

javascript - 如何保存使用 AngularJS 中的 ng-repeat 填充的多个选择框中的值?

angularjs - Grunt Karma PhantomJS - 语法错误 : Unexpected token '>' ?