Gulp以错误的顺序编译Angularjs 1脚本

时间:2018-08-27 07:17:44

标签: angularjs gulp

为什么会这样?当我使用GULP编译脚本时,控制台将显示错误,并说明我的directives和/或controllers未注册。然后要纠正此错误,我在controller文件中创建了app变量,然后呈现了一个新错误,然后放回了app变量声明,一切正常。

这是我的Gulp脚本

var gulp = require('gulp'),
plugins = require('gulp-load-plugins')({
    pattern: ['gulp-*', 'gulp.*'],
    replaceString: /\bgulp[\-.]/
});

var path = {
    jsFiles: "./js/**",
    scriptFile: "scripts.min.js",
    output: "dist/assets/"
};

var options = {
    ie8: true,
    warnings: true,
    mangle: true
};

gulp.task('scripts', function (cb) {

    return gulp.src(path.jsFiles)
        .pipe(plugins.sourcemaps.init())
        .pipe(plugins.jsdoc3(cb))
        .pipe(plugins.concat(path.scriptFile))
        .pipe(plugins.babel())
        .pipe(plugins.ngAnnotate())
        .pipe(plugins.uglify(options))
        .pipe(plugins.sourcemaps.write("../../maps"))
        .pipe(gulp.dest(path.output))
})

TLDR:我的Gulp任务有时会无序地编译AngularJS directivescontrollers,从而导致我的应用程序声明undefined

2 个答案:

答案 0 :(得分:1)

将地球仪传递到

gulp.src 

不能保证不能下订单,因此可能会不时得到错误的订单。但是gulp.src也接受您需要包含的路径数组,这应该保证顺序

因此,请尝试拆分包并将路径作为第一个元素传递到angular.min.js:

gulp.src(['path/to/angular.min.js', 'path/to/your/code'])

答案 1 :(得分:0)

您应该对角度文件进行排序,并且有一些库可以做到这一点。 https://www.npmjs.com/package/gulp-angular-filesort是其中之一。