正确发布一个 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_version
和next_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目录?