【发布时间】:2021-01-11 12:11:58
【问题描述】:
我正在整理一个启动工具包,将React 组件库与Rollup 捆绑在一起。
该库包括使用LESS 的Antd 和Tailwind。
我的rollup.config.ts 文件有问题:
[!] Error: Unexpected character '@' (Note that you need plugins to import files that
are not JavaScript)
src\tailwind.css (1:0)
@import 'tailwindcss/base';
^
我不知道如何配置“rollup-plugin-postcss”。我看到了几个选项:
- 只使用一次插件,同时处理 LESS 和 CSS。
- 使用该插件两次,一次仅用于 LESS 文件,另一次仅用于 CSS 文件。
在任何一种情况下,我总是会收到错误消息,因为我无法告诉插件仅在 css 或 less 扩展上运行,尽管在 extensions 选项中指定了它们。
这是我的rollup 配置:
import peerDepsExternal from 'rollup-plugin-peer-deps-external'
import resolve from '@rollup/plugin-node-resolve'
import commonjs from '@rollup/plugin-commonjs'
import typescript from 'rollup-plugin-typescript2'
import postcss from 'rollup-plugin-postcss'
import copy from 'rollup-plugin-copy'
const packageJson = require('./package.json')
export default {
input: 'src/index.ts',
output: [
{
file: packageJson.main,
format: 'cjs',
sourcemap: true
},
{
file: packageJson.module,
format: 'esm',
sourcemap: true
}
],
plugins: [
peerDepsExternal(),
resolve(),
commonjs(),
typescript({ useTsconfigDeclarationDir: true }),
postcss({
config: {
path: './postcss.config.js'
},
use: {
less: { javascriptEnabled: true }
},
extensions: ['.less'], // Looks like this still processes CSS despite this line.
extract: false
}),
postcss({
config: {
path: './postcss.config.js'
},
extensions: ['.css'],
extract: false
})
]
}
src/index.ts:
import './tailwind.css'
export * from './test-component'
src/tailwind.css:
@import 'tailwindcss/base';
@import 'tailwindcss/components';
@import 'tailwindcss/utilities';
postcss.config.js
const isProduction = process.env.NODE_ENV === 'production';
module.exports = {
plugins: [
require('postcss-import'),
require('tailwindcss')('./tailwind.config.js'),
require('autoprefixer'),
require('postcss-preset-env')({
browsers: ['last 2 versions', '> 5%'],
}),
require('cssnano'),
],
};
【问题讨论】: