我使用 browserify 来转换我的代码,现在在导入 sass 文件时出现错误
@import 解析错误
谁能帮我解决这个问题如何使用和集成
使用最新版本的create-react-app
你不必弹出你的 react 应用程序来添加 sass 支持。
只需添加node-sass
到您的项目中:
新PM:npm install node-sass --save
纱yarn add node-sass
现在你可以在你的 react 组件中导入 sass 文件。在此处查看官方文档
最近,React 团队和一些贡献者发布了一个很棒的工具,用于基于一组最小的想法创建无配置的 React 应用程序,以帮助初学者深入构建 React 应用程序,而不必担心初学者可能会感到畏惧的工具。
有两种方法可以添加SASS
或添加SCSS
到create-react-app
项目中。
这种方法更简单,可以在不弹出项目的情况下工作。如果您不想弹出,请使用此方法。单击此处查看项目的官方指南,了解如何使用 NPM 脚本安装 Sass 或 Scss。
这种方法没有那么简单,但更具可扩展性和自动化程度。不幸的是,这种方法需要弹出。弹出一个项目,虽然在许多高级情况下很有用,但意味着create-react-app
你将不容易获得期货更新。
在开始之前,通过在项目目录中运行以下命令之一,从您选择的打包程序中安装并保存必要的工具。
纱: yarn add sass-loader node-sass --dev
新PM: npm install sass-loader node-sass --save-dev
添加sass
orscss
到您的 create-react-app 项目将首先要求您退出,这可以通过在项目的基本目录中执行以下命令来完成。
npm run eject
弹出完成后,找到 config 文件夹,其中包含两个 webpack 配置文件。这些配置文件中的每一个都对应于不同的环境——开发或生产。进入开发配置文件,在区块内webpack.config.dev.js
定位区块。loaders
modules
在 webpack 中,加载器允许开发人员在需要/加载文件时“预处理”文件。Create react app 使用多个加载器来处理各种构建任务,例如使用 babel 进行编译、使用 PostCSS 前缀或允许导入资产。要将 Sass 或 Scss 添加到此项目中,您将添加一个可以处理 Sass 和 Scss 文件的加载程序。
在进行任何修改之前,块的开头loaders
应类似于以下代码(确切的代码可能会在 CRA 的未来版本中更改)。
loaders: [
// Process JS with Babel.
{
test: /\.js$/,
include: paths.appSrc,
loader: 'babel',
query: require('./babel.dev')
},
...
在加载器数组的开头之后,您可以为 Sass 和 Scss 添加自己的加载器。下面代码中加载器数组中的“sass”加载器能够处理 Sass 和 Scss 文件。
如果您愿意SASS
,可以添加:
{
test: /\.sass$/,
include: paths.appSrc,
loaders: ["style", "css", "sass"]
},
如果您愿意SCSS
,可以添加:
{
test: /\.scss$/,
include: paths.appSrc,
loaders: ["style", "css", "sass"]
},
重要提示:在较新版本的 create-react-app 中,如果您exclude
在 webpack 配置中看到一个数组,则需要将以下行添加到
/\.sass$/,
/\.scss$/,
现在 Sass 和 Scss 加载器已经就位,您可以开始使用 Sass/Scss 文件了。例如,在create-react-app 附带的默认App.js组件中,您现在可以编写
import './App.sass'; // or `.scss` if you chose scss
请注意,您还必须将“App.css”文件重构为 Sass,并将其文件名更改为“App.sass”。
参考取自本网站。
我正在使用“scss”文件并在将其导入组件时遇到问题。
这是我找到的解决方案。
第 1 步:更新 typings.d.ts(我正在使用 TSX 文件)。并在根级别添加以下代码
declare module '*.scss';
第 2 步:在组件中导入带有扩展名的 scss 文件(例如:TodoComponent.tsx)文件
import styles from "./score-widget.component.scss";
第三步:在return语句中添加样式
import * as React from "react";
import { IScoreWidget } from "../models/score-widget-model";
import styles from "./score-widget.component.scss";
function ScoreWidget(props) {
const css = styles; //storing styles in const
return (
<React.Fragment>
<style>{css}</style> //added css in code
<div className="score-prop-container">
<!--Your component logic goes here-->
</div>
</React.Fragment>
);
}
export default ScoreWidget;