我已经将styled-jsx添加到我的Preact(使用此TS template设置)项目中,并且可以通过<style>
标记对内容进行内联样式设置,没有任何问题,例如:
<div>
<h1>Hello{name && `, ${name}`}!</h1>
<form onSubmit={handleNameSubmit}>
<input type="text" value={input} onInput={handleInput} />
<button type="submit" className="test">
Update {input && `as ${input}`}
</button>
</form>
<style jsx>
{`
h1 {
color: red;
}
.test {
color: blue;
}
`}
</style>
</div>
但是如果我按照他们的指示将该样式提取到一个单独的css
变量中(在同一个文件中或外部),我会得到以下错误:
if you are getting this error it means that your `css` tagged template literals were not transpiled.
在SO和Github上有一些答案/解决方案,但它们都涉及到更改webpack配置--而我没有webpack配置。看起来preact-cli
没有现成的webpack配置。我已经按照建议将babel规则添加到我的babelrc
中:
{
"presets": ["preact-cli/babel"],
"plugins": [["styled-jsx/babel", { "optimizeForSpeed": true }]]
}
但是,我没有安装任何额外的macros
或babel插件,因为styled-jsx自述文件中的原始说明中没有这一点。
1条答案
按热度按时间tzxcd3kk1#
使用
.babelrc
目前在Preact-CLI中不受支持,尽管这是由于一个奇怪的bug,我还没有能够跟踪到。但是你仍然可以编辑Webpack的配置文件,这就是你的
preact.config.js
,它的文档可以在这里找到。在你的例子中,你需要的如下:preact.config.js
让我知道这是否解决了您的问题。