Grunt在index.html中指定注入文件的顺序

时间:2015-04-23 07:14:30

标签: gruntjs yeoman angular-fullstack

我正在为我的一个项目使用angular-fullstack yeoman生成器,如果我运行grunt构建,我的index.html将被grunt-injector发现的注入依赖项覆盖。问题是我想按特定顺序指定某些模块的加载,或者我只想忽略特定文件夹。我怎样才能做到这一点?目前一些javaScript文件以错误的顺序加载,每次运行grunt build时都会出错。

3 个答案:

答案 0 :(得分:4)

您可以使用数组来指定顺序,例如



// Inject application script files into index.html
scriptsVendor: {
    options: {
      transform: function(filePath) {
        filePath = filePath.replace('/app/', '');
        return '<script src="' + filePath + '"></script>';
      },
      starttag: '<!-- injector:js -->',
      endtag: '<!-- endinjector -->'
    },
    files: {
      'app/index.html': [
        [
          'app/lib/js/jquery.js',
          'app/lib/js/bootstrap.js',
          'app/lib/js/angular.js'
        ],
        [
          'app/lib/js/angular-*.js',
          'app/lib/js/ui-*.js'
        ]
      }
    }
&#13;
&#13;
&#13;

所以我在jquery然后bootstrapangular之前加载。在下一个块中,所有角度模块都以angular-ui-开头。

忽略某些文件或文件夹

!app/lib/js/*.min.js
!app/lib/js/folder_to_ignore/*.js

即使有点晚了,我希望它有所帮助: - )

答案 1 :(得分:0)

在我的情况下,我有几个角度模块,配置和运行功能,分隔三个文件,名为xyz.module.js,xyz.config.js,xyz.run.js

Gulp搜索所有.js文件:&#34; ** / *。js&#34;注入时使用字母顺序,因此* .module.js在* .config.js之后加载,这会导致缺少xyz模块定义的错误。

所以应该切换订单。我不想使用硬编码数组,我想继续使用通配符。

在我的情况下执行此操作的解决方案: https://ww

用法(在gulpfile中):

var angularFilesort = require('gulp-angular-filesort');
gulp.src(['./src/app/**/*.js']).pipe(angularFilesort())

答案 2 :(得分:0)

只是要标记@ felix-at-housecat的答案,我需要确保angular-translate-handler-log.js是在angular-translate.js之后呈现的,但是由于字母排序,它会在之前显示。为此,我将注射器设置如下:

injector: {
    dev: {
        files: {
            'dist/static/index.html': [
                [
                    'dist/static/js/lib/jquery.js',
                    'dist/static/js/lib/bootstrap.js',
                    'dist/static/js/lib/angular.js',
                    'dist/static/js/lib/angular-*.js',
                    'dist/static/js/lib/angularjs*.js',
                    . . .
                     '!dist/static/js/lib/angular-translate-handler-log.js'
                ],
                [
                    'dist/static/js/lib/angular-translate-handler-log.js'
                ]
            ]
        },
. . .

现在,/angular-translate-handler-log.js将在第一个数组(包括angular-translate.js)中的所有文件之后呈现在文件中。