pas*_*ood 6 css import rollup rollupjs
我尝试创建一个简单的汇总应用程序配置,但在使用 css 时遇到了一些麻烦。
这是我的 css 文件:
@import "normalize.css";
@import "typeface-roboto";
html, body, #root {
height: 100%;
font-family: Roboto, serif;
}
body {
background: url('./images/background.jpg');
}
Run Code Online (Sandbox Code Playgroud)
我所拥有的只是关于未找到资源的 3 个错误。
这是我的配置文件:
import resolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'
import babel from 'rollup-plugin-babel'
import replace from 'rollup-plugin-replace'
import postcss from 'rollup-plugin-postcss'
import html from 'rollup-plugin-fill-html'
import url from "rollup-plugin-url"
process.env.NODE_ENV = 'development'
const CWD = process.cwd()
const Paths = {
SRC: `${CWD}/src`,
DIST: `${CWD}/dist-rollup`,
NODE_MODULES: `${CWD}/node_modules`
}
Object.assign(Paths, {
INPUT: Paths.SRC + '/index.js',
OUTPUT: Paths.DIST + '/index.js'
})
export default {
input: Paths.INPUT,
output: {
file: Paths.OUTPUT,
format: 'iife', // immediately-invoked function expression — suitable for <script> tags
// sourcemap: true
},
plugins: [
html({
template: `${Paths.SRC}/template.html`,
filename: 'index.html'
}),
postcss({
modules: true,
plugins: [
]
}),
url({
limit: 10 * 1024, // inline files < 10k, copy files > 10k
}),
resolve(), // tells Rollup how to find date-fns in node_modules
babel({
exclude: 'node_modules/**'
}),
commonjs(), // converts date-fns to ES modules
replace({ 'process.env.NODE_ENV': JSON.stringify('development') })
]
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用rollup-plugin-rebase和 之类的插件postcss-assets,但不幸的是,它对我没有帮助。
也许我选择了不常见的方式,但对我来说唯一的工作解决方案是使用 postcss 和 2 个插件:用于 @import 语法的 postcss-imports 和用于 url 的 postcss-url 。
但也有困难。Postcss-url 不想像我期望的那样只是工作。我必须使用这个插件的 3 个实例:
[
postcssUrl(), // Find files' real paths.
postcssUrl({
url: 'copy',
basePath: 'src',
useHash: true,
assetsPath: 'dist'
}), // Copy to required destination.
postcssUrl({
url (asset) {
const rebasedUrl = `dist/${path.basename(asset.absolutePath)}`
return `${rebasedUrl}${asset.search}${asset.hash}`
}
}) // Fix final paths.
]
Run Code Online (Sandbox Code Playgroud)
您可能会在https://github.com/pashaigood/bundlers-comparison上看到它的复杂情况
当然,如果您知道的话,我会很高兴看到更简单的解决方案,请与我分享。