javascript - 是什么导致在这个苗条的应用程序中编译 SASS 失败?
问题描述
我正在使用 Svelte 和材料设计库Svelte Material UI开展一个项目。
这个材料设计库需要 SASS,所以我安装了一个预处理器,npm install svelte-preprocess
并preprocess: autoPreprocess()
在 rollup.config.js 中添加。所以我现在有:
plugins: [
svelte({
// enable run-time checks when not in production
dev: !production,
// we'll extract any component CSS out into
// a separate file - better for performance
css: css => {
css.write('public/build/bundle.css');
},
preprocess: autoPreprocess()
}),
routify({ singleBuild : true}),
replace({
// stringify the object
APPENV: JSON.stringify({
isProd: production,
...config().parsed // attached the .env config
}),
}),
// more stuff
]
我有一个smui.js
包含以下内容的文件:
import Button from '@smui/button';
import Checkbox from '@smui/checkbox';
import Chips from '@smui/chips';
import Dialog from '@smui/dialog';
import FormField from '@smui/form-field';
import Select from '@smui/select';
export {
Button,
Checkbox,
Chips,
Dialog,
FormField,
Select
}
在我的index.svelt
e 文件中,我以这种方式导入上述内容:import * as Smui from "../smui.js";
.
我得到的不是带有应用程序应在其上运行的端口的成功消息,而是:
[!] Error: Unexpected character '@' (Note that you need plugins to import files that are not JavaScript)
node_modules\@smui\dialog\_index.scss (1:0)
1: @import "smui-theme";
^
2: @import "./style";
Error: Unexpected character '@' (Note that you need plugins to import files that are not JavaScript)
我究竟做错了什么?
解决方案
我有同样的问题,不知何故我设法用rollup-plugin-postcss
插件解决了这个问题。用下面的代码更新你rollup.config.js
的,你应该_smui-theme.scss
在你的 sass 目录之一。
import postcss from 'rollup-plugin-postcss'
...
plugins: [
svelte({
// enable run-time checks when not in production
dev: !production,
// we'll extract any component CSS out into
// a separate file - better for performance
css: css => {
css.write('public/build/bundle.css')
}
}),
postcss({
extensions: ['.css'],
extract: true,
minimize: true,
use: [['sass', { includePaths: ['./src/(yoursass-directory-name)', './node_modules'] }]]
})
推荐阅读
- python - 如何在与另一个与其他模型具有多对多关系的应用程序上向用户添加评论?
- javascript - 如何避免在javascript中生成重复的html代码
- php - 关于 ORDER BY 使用 Prepared Statements 的两个问题
- c - 为什么不能在 GNU C 基本内联 asm 语句中使用局部变量?
- regex - 带有可选子组的 RegEx 可选组
- c# - 如何在本地调用另一个函数应用程序?
- python - AssertionError: 字段 '' 已在序列化程序 '' 上声明,但尚未包含在 'fields' 选项中。可选的
- r - R传单 - 防止map_marker_click在某个图层上但允许标签
- typescript - 在 TypeScript 中,有没有办法省略真假类型?
- vue.js - 无法访问 vue 组件中的 axios.all