升级到Gulp 4获取错误

发布于 2025-01-20 08:22:52 字数 10128 浏览 3 评论 0原文

我刚刚升级到Gulp4,现在我遇到了这个错误。 的报告,我需要更改gulp.task(“ prod”,function(呼叫){并添加此gulp.Series。这是正确的吗?

通过阅读有关此错误

Failed to run "C:\WebProjects\ITF\Tool.Web\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
AssertionError [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}

Gulp.Json

 var gulp = require("gulp");
    var runSequence = require("run-sequence");
    var tslint = require("gulp-tslint");
    var typedoc = require("gulp-typedoc");
    var superstatic = require("superstatic");
    var shell = require("gulp-shell");
    var typescript = require("gulp-typescript");
    var tsProject = typescript.createProject("tsconfig.json");
    var sourcemaps = require("gulp-sourcemaps");
    var rimraf = require("gulp-rimraf");
    var replace = require("gulp-replace");
    var rename = require("gulp-rename");
    var ignore = require("gulp-ignore");
    var insert = require("gulp-insert");
    var concat = require("gulp-concat");
    var uglify = require("gulp-uglify");
    var tslintStylish = require("gulp-tslint-stylish");
    var util = require("gulp-util");
    var commentSwap = require("gulp-comment-swap");
    var tsc = require("gulp-typescript");
    var gulp_jspm = require("gulp-jspm");
    var inlineNg2Template = require("gulp-inline-ng2-template");
    
    /**
     * Typescript configuration 
     **/
    var paths = {
        dist: "./dist",    
        sources: "./App/**/*.ts"    
    };
    
    gulp.task("prod", function (callback) {
        runSequence(
            "compile",
            "bundle",
            "min",
            function (error) {
                if (error) {
                    console.log(error.message);
                } else {
                    console.log("Production build finished successfully");
                }
                callback(error);
            });
    });
    
    /**
     * Compile TypeScript sources
     */
    gulp.task("compile", ["clean"], function () {
        return gulp.src("./App/**/*.ts")
            .pipe(inlineNg2Template({
                base: "/",                  // Angular2 application base folder
                target: "es6",              // Can swap to es5
                indent: 2,                  // Indentation (spaces)
                useRelativePaths: false,     // Use components relative assset paths
                removeLineBreaks: false,     // Content will be included as one line
                templateExtension: ".html", // Update according to your file extension
                templateFunction: false    // If using a function instead of a string for `templateUrl`, pass a reference to that function here
            }))
            .pipe(typescript(tsProject))
            .pipe(ignore("References.js"))
            .pipe(gulp.dest("dist/App"));
    });
    
    /**
     * Bundle application parts
     */
    gulp.task("bundle:template", function () {
        return createBundleTask(paths.dist + "/App/Pages/TemplateEdit.js", "template");
    });
    
    gulp.task("bundle:agents", function () {
        return createBundleTask(paths.dist + "/App/Pages/Maintenance/Agents.js", "agents");
    });
    
    gulp.task("bundle:indications", function () {
        return createBundleTask(paths.dist + "/App/Pages/Maintenance/Indications.js", "indications");
    });
    
    gulp.task("bundle:styleguidenotes", function () {
        return createBundleTask(paths.dist + "/App/Components/NoteEditor/NoteEditor.js", "styleguidenotes");
    });
    
    gulp.task("bundle:dynamicdictionary", function () {
        return createBundleTask(paths.dist + "/App/Pages/Maintenance/DynamicDictionary.js", "dynamicdictionary");
    });
    
    gulp.task("bundle:splitdynamicdictionary", function () {
        return createBundleTask(paths.dist + "/App/Pages/Maintenance/SplitDynamicDictionary.js", "splitdynamicdictionary");
    });
    
    gulp.task("bundle:styleguidenotesdevprocess", function () {
        return createBundleTask(paths.dist + "/App/Pages/StyleGuideNote/Index.js", "styleguidenotesdevprocess");
    });
    
    gulp.task("bundle:scheduling", function () {
        return createBundleTask(paths.dist + "/App/Pages/Scheduling/Index.js", "scheduling");
    });
    
    gulp.task("bundle:templatesmanagement", function () {
        return createBundleTask(paths.dist + "/App/Pages/TemplatesManagement/Index.js", "templatesmanagement");
    });
    
    gulp.task("bundle:review", function () {
        return createBundleTask(paths.dist + "/App/Pages/Review/Index.js", "review");
    });
    
    gulp.task("bundle:ownedreview", function () {
        return createBundleTask(paths.dist + "/App/Pages/OwnedReview/Index.js", "ownedreview");
    });
    
    gulp.task("bundle:pdfqueue", function () {
        return createBundleTask(paths.dist + "/App/Pages/PdfQueue/Index.js", "pdfqueue");
    });
    
    gulp.task("bundle:admin", function () {
        return createBundleTask(paths.dist + "/App/Pages/Admin/Index.js", "admin");
    });
    
    
    gulp.task("bundle", function (callback) {
        runSequence(
            "bundle:template",
            "bundle:agents",
            "bundle:indications",
            "bundle:styleguidenotes",        
            "bundle:dynamicdictionary",
            "bundle:splitdynamicdictionary",
            "bundle:styleguidenotesdevprocess",
            "bundle:scheduling",
            "bundle:templatesmanagement",
            "bundle:review",
            "bundle:ownedreview",
            "bundle:pdfqueue",
            "bundle:admin",
            function (error) {
                if (error) {
                    console.log(error.message);
                } else {
                    console.log("Bundling finished successfully");
                }
                callback(error);
            });
    });
    
    /**
     * Create application package
     */
    gulp.task("min:template", function () {
        return createProductionPackageTask("template", true);
    });
    
    gulp.task("min:agents", function () {
        return createProductionPackageTask("agents", false);
    });
    
    gulp.task("min:indications", function () {
        return createProductionPackageTask("indications", false);
    });
    
    gulp.task("min:styleguidenotes", function () {
        return createProductionPackageTask("styleguidenotes", false);
    });
    
    gulp.task("min:dynamicdictionary", function () {
        return createProductionPackageTask("dynamicdictionary", false);
    });
    
    gulp.task("min:splitdynamicdictionary", function () {
        return createProductionPackageTask("splitdynamicdictionary", false);
    });
    
    gulp.task("min:styleguidenotesdevprocess", function () {
        return createProductionPackageTask("styleguidenotesdevprocess", false);
    });
    
    gulp.task("min:scheduling", function () {
        return createProductionPackageTask("scheduling", false);
    });
    
    
    gulp.task("min:templatesmanagement", function () {
        return createProductionPackageTask("templatesmanagement", false);
    });
    
    gulp.task("min:review", function () {
        return createProductionPackageTask("review", false);
    });
    
    gulp.task("min:ownedreview", function () {
        return createProductionPackageTask("ownedreview", false);
    });
    
    gulp.task("min:pdfqueue", function () {
        return createProductionPackageTask("pdfqueue", false);
    });
    gulp.task("min:admin", function () {
        return createProductionPackageTask("admin", false);
    });
    
    gulp.task("min", function (callback) {
        runSequence(
            "min:template",
            "min:agents",
            "min:indications",
            "min:styleguidenotes",        
            "min:dynamicdictionary",
            "min:splitdynamicdictionary",
            "min:styleguidenotesdevprocess",
            "min:scheduling",
            "min:templatesmanagement",
            "min:review",
            "min:ownedreview",
            "min:pdfqueue",
            "min:admin",
            function (error) {
                if (error) {
                    console.log(error.message);
                } else {
                    console.log("Minification finished successfully");
                }
                callback(error);
            });
    });
    
    /**
     * Clean build folder
     */
    gulp.task("clean", function () {
        return gulp.src(paths.dist, { read: false }).pipe(rimraf({ force: true }));
    });
    
    /**
     * Helper methods
     */
    var createBundleTask = function (entryPoint, packageId) {
        if (typeof entryPoint === "undefined") {
            throw "ArgumentNullException: entryPoint";
        }
    
        if (typeof packageId === "undefined") {
            throw "ArgumentNullException: packageId";
        }
    
        var task = gulp.src(entryPoint)
            .pipe(gulp_jspm({ selfExecutingBundle: true }))
            .pipe(rename(packageId + ".bundle.js"))
            .pipe(gulp.dest(paths.dist + "/bundle"));
    
        return task;
    };
    
    var createProductionPackageTask = function (packageId, uglifyDestination) {
        if (typeof packageId === "undefined") {
            throw "ArgumentNullException: packageId";
        }
    
        var filesArry = [
            "./node_modules/core-js/client/shim.min.js",
            "./node_modules/zone.js/dist/zone.js",
            "./node_modules/reflect-metadata/Reflect.js",
            paths.dist + "/bundle/" + packageId + ".bundle.js"
        ];
    
        var task = gulp.src(filesArry)
            .pipe(concat(packageId + "_concatApp.js"))
            .pipe(gulp.dest(paths.dist + "/temp"))
            .pipe(rename(packageId + ".bundle.min.js"));
    
        if (uglifyDestination) {
            task = task.pipe(uglify({ mangle: false }));
        }
    
        return task.pipe(gulp.dest(paths.dist + "/build"));    
    };

I have just upgraded to gulp4 and now I am getting this error. From reading reports on this error I need to change the gulp.task("prod", function (callback) { and add this gulp.series. Is that correct?

Error

Failed to run "C:\WebProjects\ITF\Tool.Web\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
AssertionError [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] {
  generatedMessage: false,
  code: 'ERR_ASSERTION',
  actual: false,
  expected: true,
  operator: '=='
}

gulp.json

 var gulp = require("gulp");
    var runSequence = require("run-sequence");
    var tslint = require("gulp-tslint");
    var typedoc = require("gulp-typedoc");
    var superstatic = require("superstatic");
    var shell = require("gulp-shell");
    var typescript = require("gulp-typescript");
    var tsProject = typescript.createProject("tsconfig.json");
    var sourcemaps = require("gulp-sourcemaps");
    var rimraf = require("gulp-rimraf");
    var replace = require("gulp-replace");
    var rename = require("gulp-rename");
    var ignore = require("gulp-ignore");
    var insert = require("gulp-insert");
    var concat = require("gulp-concat");
    var uglify = require("gulp-uglify");
    var tslintStylish = require("gulp-tslint-stylish");
    var util = require("gulp-util");
    var commentSwap = require("gulp-comment-swap");
    var tsc = require("gulp-typescript");
    var gulp_jspm = require("gulp-jspm");
    var inlineNg2Template = require("gulp-inline-ng2-template");
    
    /**
     * Typescript configuration 
     **/
    var paths = {
        dist: "./dist",    
        sources: "./App/**/*.ts"    
    };
    
    gulp.task("prod", function (callback) {
        runSequence(
            "compile",
            "bundle",
            "min",
            function (error) {
                if (error) {
                    console.log(error.message);
                } else {
                    console.log("Production build finished successfully");
                }
                callback(error);
            });
    });
    
    /**
     * Compile TypeScript sources
     */
    gulp.task("compile", ["clean"], function () {
        return gulp.src("./App/**/*.ts")
            .pipe(inlineNg2Template({
                base: "/",                  // Angular2 application base folder
                target: "es6",              // Can swap to es5
                indent: 2,                  // Indentation (spaces)
                useRelativePaths: false,     // Use components relative assset paths
                removeLineBreaks: false,     // Content will be included as one line
                templateExtension: ".html", // Update according to your file extension
                templateFunction: false    // If using a function instead of a string for `templateUrl`, pass a reference to that function here
            }))
            .pipe(typescript(tsProject))
            .pipe(ignore("References.js"))
            .pipe(gulp.dest("dist/App"));
    });
    
    /**
     * Bundle application parts
     */
    gulp.task("bundle:template", function () {
        return createBundleTask(paths.dist + "/App/Pages/TemplateEdit.js", "template");
    });
    
    gulp.task("bundle:agents", function () {
        return createBundleTask(paths.dist + "/App/Pages/Maintenance/Agents.js", "agents");
    });
    
    gulp.task("bundle:indications", function () {
        return createBundleTask(paths.dist + "/App/Pages/Maintenance/Indications.js", "indications");
    });
    
    gulp.task("bundle:styleguidenotes", function () {
        return createBundleTask(paths.dist + "/App/Components/NoteEditor/NoteEditor.js", "styleguidenotes");
    });
    
    gulp.task("bundle:dynamicdictionary", function () {
        return createBundleTask(paths.dist + "/App/Pages/Maintenance/DynamicDictionary.js", "dynamicdictionary");
    });
    
    gulp.task("bundle:splitdynamicdictionary", function () {
        return createBundleTask(paths.dist + "/App/Pages/Maintenance/SplitDynamicDictionary.js", "splitdynamicdictionary");
    });
    
    gulp.task("bundle:styleguidenotesdevprocess", function () {
        return createBundleTask(paths.dist + "/App/Pages/StyleGuideNote/Index.js", "styleguidenotesdevprocess");
    });
    
    gulp.task("bundle:scheduling", function () {
        return createBundleTask(paths.dist + "/App/Pages/Scheduling/Index.js", "scheduling");
    });
    
    gulp.task("bundle:templatesmanagement", function () {
        return createBundleTask(paths.dist + "/App/Pages/TemplatesManagement/Index.js", "templatesmanagement");
    });
    
    gulp.task("bundle:review", function () {
        return createBundleTask(paths.dist + "/App/Pages/Review/Index.js", "review");
    });
    
    gulp.task("bundle:ownedreview", function () {
        return createBundleTask(paths.dist + "/App/Pages/OwnedReview/Index.js", "ownedreview");
    });
    
    gulp.task("bundle:pdfqueue", function () {
        return createBundleTask(paths.dist + "/App/Pages/PdfQueue/Index.js", "pdfqueue");
    });
    
    gulp.task("bundle:admin", function () {
        return createBundleTask(paths.dist + "/App/Pages/Admin/Index.js", "admin");
    });
    
    
    gulp.task("bundle", function (callback) {
        runSequence(
            "bundle:template",
            "bundle:agents",
            "bundle:indications",
            "bundle:styleguidenotes",        
            "bundle:dynamicdictionary",
            "bundle:splitdynamicdictionary",
            "bundle:styleguidenotesdevprocess",
            "bundle:scheduling",
            "bundle:templatesmanagement",
            "bundle:review",
            "bundle:ownedreview",
            "bundle:pdfqueue",
            "bundle:admin",
            function (error) {
                if (error) {
                    console.log(error.message);
                } else {
                    console.log("Bundling finished successfully");
                }
                callback(error);
            });
    });
    
    /**
     * Create application package
     */
    gulp.task("min:template", function () {
        return createProductionPackageTask("template", true);
    });
    
    gulp.task("min:agents", function () {
        return createProductionPackageTask("agents", false);
    });
    
    gulp.task("min:indications", function () {
        return createProductionPackageTask("indications", false);
    });
    
    gulp.task("min:styleguidenotes", function () {
        return createProductionPackageTask("styleguidenotes", false);
    });
    
    gulp.task("min:dynamicdictionary", function () {
        return createProductionPackageTask("dynamicdictionary", false);
    });
    
    gulp.task("min:splitdynamicdictionary", function () {
        return createProductionPackageTask("splitdynamicdictionary", false);
    });
    
    gulp.task("min:styleguidenotesdevprocess", function () {
        return createProductionPackageTask("styleguidenotesdevprocess", false);
    });
    
    gulp.task("min:scheduling", function () {
        return createProductionPackageTask("scheduling", false);
    });
    
    
    gulp.task("min:templatesmanagement", function () {
        return createProductionPackageTask("templatesmanagement", false);
    });
    
    gulp.task("min:review", function () {
        return createProductionPackageTask("review", false);
    });
    
    gulp.task("min:ownedreview", function () {
        return createProductionPackageTask("ownedreview", false);
    });
    
    gulp.task("min:pdfqueue", function () {
        return createProductionPackageTask("pdfqueue", false);
    });
    gulp.task("min:admin", function () {
        return createProductionPackageTask("admin", false);
    });
    
    gulp.task("min", function (callback) {
        runSequence(
            "min:template",
            "min:agents",
            "min:indications",
            "min:styleguidenotes",        
            "min:dynamicdictionary",
            "min:splitdynamicdictionary",
            "min:styleguidenotesdevprocess",
            "min:scheduling",
            "min:templatesmanagement",
            "min:review",
            "min:ownedreview",
            "min:pdfqueue",
            "min:admin",
            function (error) {
                if (error) {
                    console.log(error.message);
                } else {
                    console.log("Minification finished successfully");
                }
                callback(error);
            });
    });
    
    /**
     * Clean build folder
     */
    gulp.task("clean", function () {
        return gulp.src(paths.dist, { read: false }).pipe(rimraf({ force: true }));
    });
    
    /**
     * Helper methods
     */
    var createBundleTask = function (entryPoint, packageId) {
        if (typeof entryPoint === "undefined") {
            throw "ArgumentNullException: entryPoint";
        }
    
        if (typeof packageId === "undefined") {
            throw "ArgumentNullException: packageId";
        }
    
        var task = gulp.src(entryPoint)
            .pipe(gulp_jspm({ selfExecutingBundle: true }))
            .pipe(rename(packageId + ".bundle.js"))
            .pipe(gulp.dest(paths.dist + "/bundle"));
    
        return task;
    };
    
    var createProductionPackageTask = function (packageId, uglifyDestination) {
        if (typeof packageId === "undefined") {
            throw "ArgumentNullException: packageId";
        }
    
        var filesArry = [
            "./node_modules/core-js/client/shim.min.js",
            "./node_modules/zone.js/dist/zone.js",
            "./node_modules/reflect-metadata/Reflect.js",
            paths.dist + "/bundle/" + packageId + ".bundle.js"
        ];
    
        var task = gulp.src(filesArry)
            .pipe(concat(packageId + "_concatApp.js"))
            .pipe(gulp.dest(paths.dist + "/temp"))
            .pipe(rename(packageId + ".bundle.min.js"));
    
        if (uglifyDestination) {
            task = task.pipe(uglify({ mangle: false }));
        }
    
        return task.pipe(gulp.dest(paths.dist + "/build"));    
    };

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

通知家属抬走 2025-01-27 08:22:53

看来 runSequence 是为 Gulp 3 设计的。在 Gulp 4 中,您可以使用内置的 gulp.series 代替。

对于“prod”任务:

gulp.task("prod", gulp.series(
    "compile",
    "bundle",
    "min"
);

对于“build”任务也类似:

gulp.task("bundle", gulp.series(
    "bundle:template",
    "bundle:agents",
    "bundle:indications",
    "bundle:styleguidenotes",        
    "bundle:dynamicdictionary",
    "bundle:splitdynamicdictionary",
    "bundle:styleguidenotesdevprocess",
    "bundle:scheduling",
    "bundle:templatesmanagement",
    "bundle:review",
    "bundle:ownedreview",
    "bundle:pdfqueue",
    "bundle:admin"
));

对于“min”:

gulp.task("min", gulp.series(
    "min:template",
    "min:agents",
    "min:indications",
    "min:styleguidenotes",        
    "min:dynamicdictionary",
    "min:splitdynamicdictionary",
    "min:styleguidenotesdevprocess",
    "min:scheduling",
    "min:templatesmanagement",
    "min:review",
    "min:ownedreview",
    "min:pdfqueue",
    "min:admin"
));

It seems that runSequence was designed for Gulp 3. In Gulp 4, you can use the built-in gulp.series instead.

For your "prod" task:

gulp.task("prod", gulp.series(
    "compile",
    "bundle",
    "min"
);

And similarly for the "build" task:

gulp.task("bundle", gulp.series(
    "bundle:template",
    "bundle:agents",
    "bundle:indications",
    "bundle:styleguidenotes",        
    "bundle:dynamicdictionary",
    "bundle:splitdynamicdictionary",
    "bundle:styleguidenotesdevprocess",
    "bundle:scheduling",
    "bundle:templatesmanagement",
    "bundle:review",
    "bundle:ownedreview",
    "bundle:pdfqueue",
    "bundle:admin"
));

And for "min":

gulp.task("min", gulp.series(
    "min:template",
    "min:agents",
    "min:indications",
    "min:styleguidenotes",        
    "min:dynamicdictionary",
    "min:splitdynamicdictionary",
    "min:styleguidenotesdevprocess",
    "min:scheduling",
    "min:templatesmanagement",
    "min:review",
    "min:ownedreview",
    "min:pdfqueue",
    "min:admin"
));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文