将 css 文件注入到使用 HtmlWebpackPlugin 生成的 html 文件的头部
Injecting css file into head of html file generated using HtmlWebpackPlugin
我已经配置 babel-css-in-js plugin 在 webpack 运行 babel-loader
时将 css 文件构建到 ./app/bundle.css
中。我需要将此文件注入 html-webpack-plugin
生成的 HTML 文件中。我试过通过 css-loader
加载它,例如:
import './bundle.css';
const styles = cssInJs({
red: {
color: 'white',
backgroundColor: 'red',
},
});
const redClass = cx(styles.red);
function HelloWorld() {
return (<h2 className={redClass}><LoremIpsum /></h2>);
}
但我收到错误:
client?cb1f:75 ENOTSUP: operation not supported on socket,
uv_interface_addresses
@ ./app/index.js 17:0-23
./bundle.css not found
这是我的 .babelrc
:
["css-in-js", {
"vendorPrefixes":true,
"mediaMap":{
"phone": "media only screen and (max-width: 768px)",
"tablet":"media only screen and (max-width: 992px)",
"desktop":"media only screen and (max-width: 1200px)"
},
"identifier": "cssInJs",
"transformOptions":{
"presets":["env"]
},
"bundleFile": "./app/bundle.css"
}
]
html-webpack-plugin 使用 html-webpack-template
进行如下配置:
new HtmlWebpackPlugin({
inject: false,
mobile: true,
appMountId: 'root',
template,
}),
是否有任何其他机制可用于将 css file
注入生成的模板的头部?
项目源在github
我已使用 react-helmet
将外部样式表注入到生成的 html 页面中。首先,我从模块中删除了 webpack.config.js
中的 css-loader
和 import ./bundle.css
。我编辑了 .babelrc
以将 css
的 bundlePath
更改为 build
目录。
然后我补充说:
import Helmet from 'react-helmet';
const cssLink = {
rel: 'stylesheet',
type: 'text/css',
href: './bundle.css',
};
我将以下内容添加到我的根组件中:
<Helmet link={[cssLink]} />
组件现在看起来像:
function HelloWorld() {
return (<h2 className={redClass}>
<Helmet link={[cssLink]} />
<LoremIpsum />
</h2>);
}
我已经配置 babel-css-in-js plugin 在 webpack 运行 babel-loader
时将 css 文件构建到 ./app/bundle.css
中。我需要将此文件注入 html-webpack-plugin
生成的 HTML 文件中。我试过通过 css-loader
加载它,例如:
import './bundle.css';
const styles = cssInJs({
red: {
color: 'white',
backgroundColor: 'red',
},
});
const redClass = cx(styles.red);
function HelloWorld() {
return (<h2 className={redClass}><LoremIpsum /></h2>);
}
但我收到错误:
client?cb1f:75 ENOTSUP: operation not supported on socket,
uv_interface_addresses
@ ./app/index.js 17:0-23
./bundle.css not found
这是我的 .babelrc
:
["css-in-js", {
"vendorPrefixes":true,
"mediaMap":{
"phone": "media only screen and (max-width: 768px)",
"tablet":"media only screen and (max-width: 992px)",
"desktop":"media only screen and (max-width: 1200px)"
},
"identifier": "cssInJs",
"transformOptions":{
"presets":["env"]
},
"bundleFile": "./app/bundle.css"
}
]
html-webpack-plugin 使用 html-webpack-template
进行如下配置:
new HtmlWebpackPlugin({
inject: false,
mobile: true,
appMountId: 'root',
template,
}),
是否有任何其他机制可用于将 css file
注入生成的模板的头部?
项目源在github
我已使用 react-helmet
将外部样式表注入到生成的 html 页面中。首先,我从模块中删除了 webpack.config.js
中的 css-loader
和 import ./bundle.css
。我编辑了 .babelrc
以将 css
的 bundlePath
更改为 build
目录。
然后我补充说:
import Helmet from 'react-helmet';
const cssLink = {
rel: 'stylesheet',
type: 'text/css',
href: './bundle.css',
};
我将以下内容添加到我的根组件中:
<Helmet link={[cssLink]} />
组件现在看起来像:
function HelloWorld() {
return (<h2 className={redClass}>
<Helmet link={[cssLink]} />
<LoremIpsum />
</h2>);
}