将 grunt 命令行选项解释为字符串
Interpreting grunt command line option as string
作为构建过程的一部分,我们运行一个像这样的Grunt任务:
grunt release -r 3.9
随 -r
选项传递的版本号用于标记版本的各个部分。
以零结尾的版本会出现麻烦 - 例如 3.10。Grunt 将此视为一个数字,删除尾随零并认为这是 3.1 版。
下面是一个简单的 Gruntfile,它演示了这个问题:
module.exports = function(grunt) {
grunt.registerTask('default', 'Release preparation', function () {
var rel = grunt.option("r").toString();
grunt.log.writeln("Release data type:" + typeof rel);
grunt.log.writeln("release (" + rel + ")");
});
};
以下是您得到的:
$ grunt -r 3.10
Running "default" task
Release data type:string
release (3.1)
Done, without errors.
toString()
会适当地将其转换为字符串,但损坏已经造成。尾随的零消失了。
有什么办法吗?
不幸的是,这种行为似乎是设计使然,因为 grunt-cli 使用 nopt 模块进行命令行解析。请参阅此处的代码,关键行是:
return nopt(exports.known, exports.aliases, process.argv, 2);
这就是 nopt 对类型的看法(强调我的):
解析未知字段时,"true"、"false"和"null"将被解释为它们的 JavaScript 等价物,数值将被解释为数字。
几种解决方法可能是:
- 在命令行上使用类似
grunt release -r "v3.10"
的东西,并在你的咕噜咕噜代码中去除"v" - 在咕噜咕噜的代码中再次读取
process.argv
并将其传递到您选择的选项解析器
相关文章:
- Javascript 如何强制 string.replace 不将我的字符串解释为正则表达式
- 注入的HTML仅在Dom中解释为字符串
- 如何将JS字符串解释为文件或在Bundlebars中使用字符串
- 传递的URL字符串未解释为字符串
- 让日期字符串在浏览器中得到相同的解释
- 用“i”替换字符串中的元音..你能解释一下这个表达吗?someText.replace(/[aAeEoOuU]/ig,“
- 角度指令 将属性解释为字符串
- 数组中的字符串“”被解释,是否有解决方法
- 如何将文件内容解释为模板字符串
- 将 grunt 命令行选项解释为字符串
- 谁能解释这种关于字符串连接的奇怪 JS 行为
- 在Javascript字符串文本中解释HTML标记
- 将javascript连接字符串解释为变量
- Salesforce中的对象在Google Apps Script/Javascript中被解释为字符串
- 生成一个与Javascript字符串匹配的Regex对象.解释方法
- AJAX响应被解释为字符串
- 需要解释这个Javascript字符串资本主义原型
- nodeValue字符串解释为数字
- 将二进制字符串解释为Python中的图像,由Javascript本地方法生成
- javascript库将字符串解释为JSON对象.任何想法