了解如何设置一个任务来多次调用一个插件

Grunt how to set up a task to invoke a plugin more than once

本文关键字:一个 调用 插件 任务 了解 何设置 设置      更新时间:2023-09-26

我使用requires将代码分发到单个文件中。

咕哝。initConfig,我有:

grunt.initConfig({
   requirejs: {
        compile: {
            options: {
                paths: requirejs_path,
                shim:require_shim,
                baseUrl : "./mobile",
                name: "mobilemain",
                out: "./mobile/dist/main.js",
                removeCombined: true,
                findNestedDependencies: true,
                optimize: "uglify2",
                wrap: true,
                uglify2: requirejs_uglify2
            }
        }
    }
}

这部分代码用来设置需求。我使用

grunt.registerTask("distribute", ["typescript", "requirejs"]);

将其注册到任务distribute,一切正常。

现在我想在distribute任务中调用两次需求,一次用于移动设备,一次用于桌面设备。基本上,我需要更改上面代码中的baseUrlnameout配置。

我该怎么做呢?

grunt-contrib- requires是一个多任务,你可以简单地配置尽可能多的子任务(使用options属性)

grunt.initConfig({
   requirejs: {
        // define your base options which are the same for both tasks
        options: {
            paths: requirejs_path,
            shim:require_shim,
            removeCombined: true,
            findNestedDependencies: true,
            optimize: "uglify2",
            wrap: true,
            uglify2: requirejs_uglify2
        },
        // your first task which contains the 3 options which should be used 
        compile: {
            options: {
                baseUrl : "./mobile",
                name: "mobilemain",
                out: "./mobile/dist/main.js"
            }
        },
        // your second task which contains the 3 options which should be used 
        compile2: {
            options: {
                baseUrl : "...",
                name: "...",
                out: "..."
            }
        }
    }
}

则可以保留别名任务distribute,因为如果没有指定,grunt将运行所有子任务

grunt.registerTask("distribute", ["typescript", "requirejs"]);

或者您可以简单地使用冒号符号运行单个子任务:

grunt.registerTask("distribute", ["typescript", "requirejs:compile", "requirejs:compile2"]);

第二个将是有用的,如果你绝对必须保证,compile需要在compile2之前运行(记住:javascript不保证对象中的属性顺序)