如果不使用 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)
但是...当然:我正在使用 concat
和bower_concat
。
我这样使用它们:
首先,我使用 Bower_concat 并创建
build/bower-concat.js
注意: Bower_concat 读取bower_components
中每个子目录的每个 Bower.json它连接所有主文件。
注2:“angular-18n”的bower.json有"ignore": ["**/.*", ...
然后我将所有 js(我的 Controller 等)连接到
build/inouse-concat.js
中- 最后我连接
bower-concat.js
与inhouse-concat.js
进入all-concat.js
-
<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-concat
的 exclude
参数。
还有一个 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/