Snowpack - 将 scss 导入 tsx

Posted

技术标签:

【中文标题】Snowpack - 将 scss 导入 tsx【英文标题】:Snowpack - import scss into tsx 【发布时间】:2020-10-29 09:24:11 【问题描述】:

我正在设置一个 Snowpack 项目,目的是在配置相同的情况下将现有的 Create-React-App 应用程序移入其中。

但是,我还没有找到将.scss 文件导入.tsx 文件的方法。

Snowpack 文档似乎只讨论将 scss 配置为外部构建的资产,建议将您的 scss 放入单独的 css 文件夹 docs link 。但是,我想将我的 scss 文件保留在它们所属的 tsx 组件旁边,并将它们导入到我目前的组件中。 文档还引用了a blog post discussing a setup with PostCSS,但是该帖子表明该方法存在一些问题,包括源映射不起作用 - 这不会飞行。

我创建了这样的项目:

npx create-snowpack-app my-sweet-app --template @snowpack/app-template-react-typescript --use-yarn

然后我添加了一个新的 scss 文件,src/test.scss

$best-colour: tomato;

body 
    background-color: $best-colour;

并在我的src/App.tsx 文件中添加了一个导入:

import './test.scss';

运行yarn start 时出现以下错误:

[error] [404] /_dist_/test.css.proxy.js
    ✘ /home/me/repos/my-sweet-app/public/_dist_/test.css
    ✘ /home/me/repos/my-sweet-app/src/test.css

是否可以将 Snowpack 配置为将 scss 文件导入 tsx 文件,就像它在 Create React App 中的工作方式一样?怎么样?

【问题讨论】:

您是否在 snowpack 配置中设置了 run:sass 脚本? snowpack.dev/#sass @Valentin 您链接的文档似乎在 src/css 中获取了一些 *.scss 文件并将它们编译为 public/css 中的 *.css 文件。但是,我正在尝试编译我的 scss 文件,然后将其作为 JS 捆绑到我的 JS 捆绑文件中 - 复制 webpacks sass 加载器的行为。 【参考方案1】:

虽然我没有完整的答案,但我遇到了和你一样的问题。您基本上想要实现的是,向 Snowpack 的构建管道添加其他工具。

如果你输入Babelwith Snowpack,你可以添加任意荒谬的 babel 插件来满足你所有的转换需求。

使用@researchgate/babel-plugin-transform-scss-import-to-string 并将其添加到我的babel.config.js 中,我能够将我的Sassy 内容转译成字符串。

但是,这不是一个完整的解决方案;因为现在 Snowpack 不会在我的 Sass 文件中获取更改... :( 似乎很多那些新的 anti bundlers 就是这样,他们反对捆绑,因此将它们与额外的 pre 相结合- 处理过去由我们优秀的旧捆绑器完成的东西很麻烦

【讨论】:

谢谢,这是一个不错的解决方法!我已经从 Snowpack 转到 ViteJS,在那里取得了更大的成功!

以上是关于Snowpack - 将 scss 导入 tsx的主要内容,如果未能解决你的问题,请参考以下文章

Snowpack 和 postcss 导入?

如何使用 Next.js 在组件级别导入 SCSS

Snowpack 无法从 node_modules 导入 JavaScript

stenciljs 学习六 组件开发样式指南

React/Typescript /VScode - 导入路径不能以“.tsx”扩展名结尾

snowpack woff2 字体无法加载