Language-tools: 使用postcss-preset-env自定义媒体时svelte(css-syntax-error)

创建于 2020-09-02  ·  8评论  ·  资料来源: sveltejs/language-tools

重现
您可以使用我的仓库来复制它https://github.com/shamsartem/dbudget
检查default.svelte是否存在错误。

或者:

  1. 使用{stage:0}设置将postcss-preset-env插件添加到rollup.config.js和postcss.config.js中
  2. 添加例如@ custom-media --t(宽度> = 768px); 在App.svelte中,带有lang =“ postcss”的样式标签
  3. 尝试在App.svelte中使用@media (--t)-它应该可以正常工作,并且看不到错误
  4. 尝试在其他组件中使用@media (--t)-它显示错误,但可以正常构建和运行

预期行为
在这种情况下应该没有错误

系统(请完成以下信息):

  • 操作系统:Manjaro
  • IDE:VSCode
  • 插件/软件包:“ Svelte for VSCode”
question

最有用的评论

我找到了一种解决方法(希望我没有再太快地得出结论,哈哈)

// svelte.config.js
const sveltePreprocess = require('svelte-preprocess')
const fs = require('fs')
const mediaQueries = fs
  .readFileSync('./src/assets/css/media-queries.css')
  .toString()

module.exports = {
  preprocess: sveltePreprocess({
    postcss: {
      prependData: mediaQueries,
    },
  }),
}

关于构建,我想这是因为您在app.svelte中声明了自定义媒体。 一旦删除它并重新启动开发服务器,就会出现在IDE中遇到的相同错误。
也许您可以在想要使用媒体查询时将其导入,或使其在全球范围内可用。

所有8条评论

#305的重复项

我们没有计划支持postcss或css next的验证。 太多的维护工作。 您可以参考此文档获取安装说明

对于您的特定情况:Svelte文件是按文件编译的,因此,如果您未在其中定义--t ,则对组件中的

非常感谢您的答复。 我非常感谢您为此付出的努力

我之所以决定发布有关此内容的信息,仅是因为以前已经使用了这些自定义媒体查询两周了,并且没有错误,但是经过一些更新(我想),现在有了一个。 谁知道,将来它也可能成为CSS规范的一部分。 我希望至少到那时才能解决。 谢谢

您需要以某种方式使media-queries.css中的自定义媒体也可以从svelte-config.js的预处理中

如果我尝试使用您发布的确切代码,则会产生新错误
“ postcssPresetEnv不是函数”。 即使我删除了.default,我仍然看到
一个错误。 仍然非常感谢您对此的关注。

2020年9月4日(星期五)9:37,吕达,Wei-Da [email protected]写道:

您遇到的问题是在svelte.config.js中设置了预处理程序。
您的汇总配置中已加载了三个插件。 但仅启用自动
在svelte.config.js上进行预处理,因此不会获得IDE的编译过程
预处理样式因此引发错误。

我在svelte.config.js中尝试过,错误消失了。

const sveltePreprocess = require('svelte-preprocess')const postcssImport = require('postcss-import')const postcssPresetEnv = require('postcss-preset-env')。defaultconst postcssNested = require('postcss-nested')
const postcssPlugins = [
postcssImport(),
postcssPresetEnv({stage:0}),
postcssNested(),]
module.exports = {
预处理:sveltePreprocess({
sourceMap:是的,
postcss:{
插件:postcss插件,
},
})}

-
您收到此消息是因为您创建了线程。
直接回复此电子邮件,在GitHub上查看
https://github.com/sveltejs/language-tools/issues/517#issuecomment-686945578
或退订
https://github.com/notifications/unsubscribe-auth/AC6ONEK5L3PDUXKDVGIWFMLSECDKVANCNFSM4QTPHU5Q

抱歉,我发现它无法使用XD

我找到了一种解决方法(希望我没有再太快地得出结论,哈哈)

// svelte.config.js
const sveltePreprocess = require('svelte-preprocess')
const fs = require('fs')
const mediaQueries = fs
  .readFileSync('./src/assets/css/media-queries.css')
  .toString()

module.exports = {
  preprocess: sveltePreprocess({
    postcss: {
      prependData: mediaQueries,
    },
  }),
}

关于构建,我想这是因为您在app.svelte中声明了自定义媒体。 一旦删除它并重新启动开发服务器,就会出现在IDE中遇到的相同错误。
也许您可以在想要使用媒体查询时将其导入,或使其在全球范围内可用。

@ jasonlyu123你真是太神奇了! 您一口气解决了这两个问题(在两个地方同时进行媒体查询也不是一件好事)。 我真的很感激,现在我可以很愉快地工作了。 再次感谢,祝一切顺利!

此页面是否有帮助?
0 / 5 - 0 等级