我的Webpack配置包含以下加载器。
module: {
loaders: [
{ test: /\.js$/, loader: "babel", exclude: /node_modules/ },
{ test: /\.sass$/, loaders: ["style-loader", "css-loader", "sass-loader"], exclude: /node_modules/ }
]
},
然后,我希望将CSS拉出到一个单独的文件中,我尝试使用extract text webpack plugin,像这样交替我的配置。
var ExtractTextPlugin = require("extract-text-webpack-plugin");
module: {
loaders: [
{ test: /\.js$/, loader: "babel", exclude: /node_modules/ },
// { test: /\.sass$/, loaders: ["style-loader", "css-loader", "sass-loader"], exclude: /node_modules/ }
{
test: /\.sass$/,
loader: ExtractTextPlugin.extract(
{
loaders: ["css-loader", "sass-loader"],
fallbackLoader: "style-loader"
}
),
exclude: /node_modules/
}
]
},
plugins: [new ExtractTextPlugin("global.css")],...
然而,它失败了。可能是因为我没有正确指定装载机。如何指定多个加载器(一个用于SASS,一个用于CSS)?
找不到模块:错误:无法解析模块' [object Object]'在C:\ Source \ Poc \ TestProj中 @ ./index.js 7:14-38
我已经检查了文件 index.js 但我在那里看不到任何错误。它的字面意思是空出口,如下所示。 7:14-38的提法对我没有任何意义。文件中没有那么多行,甚至......
import CssGlobal from "./global.sass";
//document.write("Banana!");
export default {}
答案 0 :(得分:0)
ExtractTextPlugin.extract()
的这种语法仅适用于webpack2及更高版本,显然(作为参数的对象)。请检查此issue。
为了使其与webpack1
一起使用,语法为:
ExtractTextPlugin.extract([notExtractLoader],loader,[options])`
notExtractLoader (可选)在未提取css时应使用的加载程序(即在allChunks中的另一个块中: 假)
loader 应该用于将资源转换为css导出模块的加载程序。
来源:https://github.com/webpack/extract-text-webpack-plugin/blob/webpack-1/README.md
因此,一个有效的配置文件是:
var ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
/* ... */
module : {
loaders: [
{ test: /\.js$/, loader: "babel", exclude: /node_modules/ },
{
test: /\.sass$/,
exclude: /node_modules/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader!sass-loader")
/* using ExtractTextPlugin.extract(["css","sass"]) works too */
}
]
},
plugins: [
new ExtractTextPlugin("styles.css")
]
}
这将生成一个styles.css
文件。
答案 1 :(得分:0)
加载程序是应用于应用程序资源文件的转换。它们是函数(在node.js中运行),它将资源文件的源作为参数并返回新的源。
例如,您可以使用加载器告诉webpack加载CoffeeScript或JSX。
很好地解释了这里 http://ui-codeman.blogspot.in/2017/02/webpack.html?view=sidebar