正确发布一个 grunt 项目

Posted

技术标签:

【中文标题】正确发布一个 grunt 项目【英文标题】:Release a grunt project properly 【发布时间】:2014-07-11 14:22:10 【问题描述】:

我正在使用 Nexus 来存储我的静态 Web 工件。

作为一名前“Java 开发人员”,我曾经经常使用 Maven release plugin 将我构建的工件部署到 Nexus。我想为我的使用 Grunt 构建的 Web 项目找到一个等价物。

目前,我使用 grunt-maven-tasks 将工件部署到 Nexus。问题是我找不到等效的 maven:release,因为它在 Java 中使用 Grunt 完成。

现有的 grunt-maven-task release 命令只是在部署到 Nexus 之前修剪“-SNAPSHOT”部分。没有进行 SCM 交互(检查未提交的资源、标记到 SCM、更改版本、提交等)。

我想为 Grunt 项目找到一个真正的“Nexus 版本”。我有什么解决方案?

【问题讨论】:

您可以向开发人员记录问题,以查看他们是否可以添加该功能,或者,如果您愿意,可以分叉存储库并将该功能作为拉取请求自行编写。 我确实在考虑这个...我在这里问,以防万一有人有现有的解决方案或解决方法。 【参考方案1】:

根据这篇文章http://labs.bsb.com/2014/02/better-maven-releases-with-jenkins/,我最终决定在在 Jenkins 中实现等效的发布工作流程。

我创建了一个 Jenkins Freestyle 项目 并使用 Release 插件 将配置发布版本添加到我的工作中。两个发布参数release_versionnext_snapshot_version 被考虑用于发布。我还使用 Scriptler 插件使用了一些自定义 Groovy 脚本。

发布步骤在标准构建成功后执行

    执行一个shell脚本来安装JS包,使用grunt-maven-task部署到nexus。 grunt-maven-task 正在跳转到下一个快照版本(此处为次要版本),因此我将其显式重新定位为 $RELEASE_VERSION 以在标记之前将当前发布版本提交给 SVN)

    npm install grunt maven:release:$RELEASE_VERSION:minor npm version $RELEASE_VERSION svn ci -m "Bump release version $RELEASE_VERSION for release tag" package.json

    运行自定义 Groovy 脚本将我的工作副本标记为 SVN。此脚本使用svn 命令行工具(此处不详)。

    执行一个 shell 脚本将 package.json 提升到下一个 SNAPSHOT 版本:

    npm version $NEXT_SNAPSHOT_VERSION svn ci -m "Bump next snapshot version to $NEXT_SNAPSHOT_VERSION after release" package.json

【讨论】:

以上是关于正确发布一个 grunt 项目的主要内容,如果未能解决你的问题,请参考以下文章

当我将项目发布到GitHub时,我应该如何处理Grunt的node_modules目录?

grunt构建一个项目

将现有 JavaScript 项目导入 Grunt/Brunch 项目

基于Grunt构建一个的项目

Grunt 项目推荐的目录结构是啥

Grunt项目构建-插件学习