使用Grunt管理AngularJS模块的版本和发布
Manage AngularJS modules version and releases using Grunt
目前,我有多个角度模块。自定义Grunt任务对每个模块进行合并、缩小和打包,以便随时可以部署。我唯一还没有做的事情就是管理这些模块的版本。
每个项目(每个模块一个)都包含一个package.json文件,我在其中声明组件的名称和版本:
{
"name": "my-module",
"version" : "1.0.0",
// etc.
}
因此,每个模块都构建在目录*/dist/my-module/1.0.0/中
但是,在模块本身,我需要访问它的版本。例如,在控制器中,我声明了一个变量$scope.version = '1.0.0'
。但目前,它是硬编码在控制器脚本中的。
第一个问题,模块是否有办法从package.json文件中获取版本?或者构建应用程序的繁重任务将脚本中的给定标志替换为模块的当前版本?(例如,我可以声明我的变量$scope.version = 'FLAG_VERSION'
,因为我知道在构建过程中,grunt将用正确的值替换标志)
第二个问题,是否有一些grunt组件可以标记我的VCS中模块的当前版本(例如SVN),然后增加当前版本?简而言之,执行模块的释放。
编辑:关于该问题的新问题,请参阅使用Grunt 在SVN上创建特定版本号
任何帮助或线索都将不胜感激!
第一个问题
我在我的grunt构建中添加了一个grunt ng常量任务(谢谢@Joe),以从package.json文件生成角度常量。它工作得很好,我现在可以将它们注入我的指令和服务中。不过,我不得不将模块名称添加到我的package.json中,因为ng常量任务需要它来为生成的常量标识模块。package.json中声明的名称与其说是模块的名称,不如说是项目名称。
{
"name": "my-project",
"version" : "1.0.0",
"moduleName": "myModuleName"
// etc.
}
下面是ng常量任务的结果:
angular.module('myModuleName')
.constant('appInfo', {name:'my-project',version:'1.0.0'})
;
我更改了我的grunt构建任务,在缩小之前,在应用程序脚本的末尾连接这个生成的脚本。所以现在我可以在服务中使用appInfo,例如:
angular.module('myModuleName').service('myService', [ ..., 'appInfo', function( ..., appInfo ){
// I can use appInfo.name and appInfo.version here !
}
小心我惊讶地将此应用于同一页上的几个模块:如果在两个不同的模块上声明了一个同名的常量,则前者的值将被后者覆盖。AngularJS module.constant():如何仅在模块内部定义常量?
第二个问题
我问了另一个问题,更确切地说,关于这个问题:使用Grunt在SVN上创建一个特定的版本号。
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 尽管链接成功并已成功下载,但未找到NPM模块
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- JS编译器/包管理器,用于版本控制
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- Chrome加载旧版本的Javascript文件
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 检查模块版本
- 使用Grunt管理AngularJS模块的版本和发布
- 版本0.9.0的UI.引导模块未捕获错误
- 私有NPM:如何安装模块的最新版本
- 如何有模块化的细节-模板的旧版本的KendoUI网格
- 为什么Yarn说“发现不兼容的模块”?当版本正确时
- Javascript在单元测试中用模拟版本修补现有的外部依赖模块方法
- Node.js请求模块获取网站的现代版本
- Node.js:确定手动安装的模块和package.json的版本号
- 如何使用我自己的jQuery版本与浏览器化模块
- 比较本地节点模块版本与包版本.json版本