0

我已经配置了babel-css-in-js 插件,以便./app/bundle.css在 webpack 运行babel-loader. 我需要将此文件注入到由html-webpack-plugin. 我试过通过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上

4

1 回答 1

0

我已经将外部样式表注入到生成的 html 页面中,使用react-helmet. 首先,我从我的模块中删除css-loaderwebpack.config.js和。import ./bundle.css我编辑了我的将目录.babelrc更改bundlePath为目录。cssbuild

然后我补充说:

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>);
}

看看.babelrcindex.js

于 2016-11-10T21:11:15.580 回答