【问题标题】:Grunt - how to run common external tasks from external projectsGrunt - 如何从外部项目运行常见的外部任务
【发布时间】:2014-08-06 12:11:17
【问题描述】:

我刚开始使用 Grunt,我想要一个可以定义常见任务的通用项目。之后,每个团队都可以创建自己的项目,并且能够将我的公共项目添加为依赖项并运行公共任务。

当您想要将一些预定义的任务添加到您的 FE 构建管道时也很有帮助。当有人将该项目推送到 github 并尝试使用 Jenkins 构建它时,我还想默认运行一些其他任务(如 jslint、uglify、compress、nexus deploy 等)。

我尝试通过创建一个包含所有这些常见任务的 grunt 项目,然后将其作为依赖项添加到其他项目来做到这一点。问题是我无法从外部项目运行常见任务。还有其他方法可以实现吗?

【问题讨论】:

    标签: javascript node.js build gruntjs build-process


    【解决方案1】:

    不太喜欢尝试将所有任务放入一个存储库并将它们拉入,但这是可能的。

    我以前没有这样做过(我已经从目录中完成了 loadTasks,它只是工作),我不喜欢它。但我看到了两种可能性:

    1.使用子模块

    您可以使用git submodules 将您的tasks-repo 拉到您的项目repo 的文件夹中,然后从它们加载您的任务。

    从文件夹加载任务是通过这种方式完成的(加载此文件夹中的所有文件!):

    grunt.loadTasks "./your-git-submodule-folder"
    

    2。使用 1 个 Git-Repo 并通过 NPM 安装它

    创建一个包含尽可能多任务的存储库。一项任务应驻留在 1 个文件中(它仅适用于 1 个文件,但我不推荐它)

    // task1.js
    grunt.registerMultiTask(task1", "run task1", function() {
      // do stuff here      
    });
    
    // task2.js
    grunt.registerMultiTask(task2", "run task2", function() {
    
    });
    

    然后您可以将 git-repo 作为简单开发依赖项安装在您的项目中:

    $ npm install git+ssh://your-tasks-repo.git --save-dev
    

    为此,您的 Gruntfile 需要为这两个任务配置目标


    我会做什么

    我自己会为每个任务创建一个 git-repo,并将每个任务单独安装到我需要它们的项目中(从 gi​​t-repo 安装 npm)。

    将可能对社区有用的任务发布到 npm-registry。使用grunt-init gruntplugin 创建新任务。


    关于您的构建过程:

    只需在您的 gruntfile 中添加一个别名任务,其中包含您希望在新提交上运行的所有任务:

    grunt.registerTask('jenkins', ['jslint', 'compress', ...]);
    

    并配置您的 jenkins 以运行此任务(您需要在 Projects-Config 中添加一个 git-hook 和 Source-Code-Management),并将一个 shell 脚本配置为 Build-Step:

    npm install && grunt jenkins
    

    或者更好的是,将scripts-section 添加到您的 package.json 并使用测试命令。

    我在这个主题上创建了一个更好的答案,不幸的是被删除了(我不知道为什么,它有很多赞成...):

    https://stackoverflow.com/questions/14722649/continuous-integration-in-nodejs/15657588#15657588

    这是另一个关于自定义任务开发的答案:

    Grunt: custom task development how-to

    【讨论】:

    • 您提出了一些有效且有趣的观点。我会重新考虑整个情况,也许在那之后,发布我选择的内容。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多