我有这行代码,将一些版本信息添加到我的版本中:
const names = [
"Oliver Hansen",
"Van Henry",
"April Tucker",
"Ralph Hubbard",
"Omar Alexander",
"Carlos Abbott",
"Miriam Wagner",
"Bradley Wilkerson",
"Virginia Andrews",
"Kelly Snyder"
];
const ITEM_HEIGHT = 48;
const ITEM_PADDING_TOP = 8;
const MenuProps = {
PaperProps: {
style: {
maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,
width: 250
}
}
};
class SomeComponent extends Component<{}, {name: string[]}> {
constructor(props: {}) {
super(props);
this.state = {name: []};
}
render(): ReactNode {
return (
<FormControl fullWidth={true}>
<InputLabel htmlFor="select-multiple">Name of some random person</InputLabel>
<Select
name="name"
multiple={true}
value={this.state.name}
onChange={this.handleMultiSelect}
input={<Input id="select-multiple" />}
fullWidth={true}
MenuProps={MenuProps}
>
{names.map(name => (
<MenuItem key={name} value={name}>{name}</MenuItem>
))}
</Select>
</FormControl>
);
}
private handleMultiSelect = (event: any): void => {
const newValue: string[] = event.target.value;
this.setState({ name: newValue });
}
}
显然这不是有效的JS,因为缺少引号。有人可以帮助我,这样我就可以将此字符串写入我的install:
- 'echo "export const VERSION = Git Hash: %APPVEYOR_REPO_COMMIT%" > version.js'
文件中了:
version.js
我确实尝试了一些转义和转义引号,但是构建时间有些痛苦。
答案 0 :(得分:1)
通过引用该序列元素,您正在浪费单引号的使用。您不能有一个普通的标量(由于中间句子冒号+空格),但是使用文字块样式标量通常会更好。以下等同于您的YAML:
install:
- |-
echo "export const VERSION = Git Hash: %APPVEYOR_REPO_COMMIT%" > version.js
因此,您可以对echo参数使用单引号,但在其中仍使用双引号:
install:
- |-
echo 'export const VERSION = "Git Hash: %APPVEYOR_REPO_COMMIT%"' > version.js
(-
之后的|
要删除最后的换行符
或者,假设Appveyor使用相对标准的回显,则可以使用其-e
选项:
-e enable interpretation of backslash escapes
在这种情况下,您不需要使用文字块样式标量来获取不太可读的内容:
install:
- 'echo -e "export const VERSION = \"Git Hash: %APPVEYOR_REPO_COMMIT%"" > version.js'
请注意,根据官方的YAML常见问题解答,YAML文件的正确扩展名应为 .yaml
。您可以使用.yml
告诉Appveyor不要默认使用Custom configuration .yml [sic!] file name
扩展名。对于我的YAML解析器,我还将其设置为隐藏文件:.appveyor.yaml