在我的head标记(使用链接标签)中包含单独的ExtractTextWebpackPlugin文件时,我在为simpy配置CSS时遇到了问题,我相信这是它的主要目的。
我在webpack.config.js中的当前配置
var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
entry: './app/index.js',
output: {
filename: "app.js",
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
}
]
},
plugins: [
new ExtractTextPlugin('general.css')
]
};在我的主index.js文件中,我有require("../style.css");
style.css放在项目根文件夹中。
在我的index.html里我有<script src="dist/app.js"></script>
据我所知,这应该在运行时将general.css包含在我的head标记中,但它并不存在。
任何帮助都是非常感谢的。
发布于 2017-04-21 17:48:40
ExtractTextPlugin只从包中移除CSS以将其与JavaScript分离,您需要将它包括在您的JavaScript中以及包中。
您可以让webpack为您生成一个HTML文件,从而实现自动化。当您在文件名中使用散列时,这一点尤其有用。您将需要使用html-webpack-plugin,它将自动包含捆绑的JavaScript以及由ExtractTextPlugin提取的CSS。
此外,您应该理解,在运行时包含CSS的想法会对页面的加载时间产生负面影响,因为您首先需要下载JavaScript包(第一个网络请求),然后需要执行JS,这需要一些时间进行分析,然后您必须下载您的CSS文件(第二个网络请求)。由于您首先依赖于要执行的包,所以您将在短时间内不使用CSS显示页面,或者在网络连接不良的低端移动设备上显示大量时间。
如果您不使用ExtractTextPlugin,而是使用style-loader,则基本上会发生这种情况。style-loader只是将您的CSS注入到<style>标记中,这是从JavaScript包中完成的,因此它仍然取决于正在执行的绑定包,但至少它不需要对JavaScript进行额外的网络请求。这甚至比您预期的ExtractTextPlugin做的更好,这将有效地使插件毫无用处。
https://stackoverflow.com/questions/43547913
复制相似问题