webpack3怎么把多个scss文件合并打包成一个css文件?
问题描述
这是我的目录结构,我想把css2文件夹下的所有scss文件合并成一个css文件打包到build目录下
问题出现的环境背景及自己尝试过哪些方法
extractTextPlugin插件我知道是用来分离scss文件的
问题出在合并scss文件的过程,我想把所有scss文件合并,只能在js入口文件里import么?
我如果想合并100个scss或者不定个数个scss文件怎么办
配置文件
const path = require('path');
const glob = require('glob');
const htmlPlugin = require('html-webpack-plugin');
const extractTextPlugin = require("extract-text-webpack-plugin");
const webpack = require("webpack");
var imJsFile = glob.sync('./im/js/core2/**/*.js');
var config = {
entry:{
entry:imJsFile
},
output:{
path:path.resolve(__dirname,'build/im'),
filename:'./js/sp.im.min.js'
},
devServer:{
contentBase:path.resolve(__dirname,'build'),
host:'localhost',
compress:true,
port:1717
},
module:{
rules:[
{
test: /\.scss$/,
use: extractTextPlugin.extract({
use: [{
loader: "css-loader"
}, {
loader: "sass-loader"
}],
fallback: "style-loader"
})
}
]
},
plugins:[
new webpack.ProvidePlugin({
jQuery:"jquery"
}),
new extractTextPlugin("/css/[name].css")
]
};
var viesObj = getView('im/view/onlineservice/chat2/*.html');
var pages = Object.keys(viesObj);
pages.forEach(function(pathname) {
var htmlName = viesObj[pathname]
var conf = {
filename: './view/' + htmlName + '.html', //生成的html存放路径,相对于path
template: './im/view/onlineservice/chat2/' + htmlName + '.html', //html模板路径
hash: true, //为静态资源生成hash值
//chunks: ['common',htmlName],//需要引入的chunk,不配置就会引入所有页面的资源
minify: { //压缩HTML文件
removeAttributeQuotes:true, //删除双引号
removeComments: true, //移除HTML中的注释
collapseWhitespace: false //删除空白符与换行符
}
};
config.plugins.push(new htmlPlugin(conf));
});
module.exports = config;
function getView(globPath, pathDir) {
var files = glob.sync(globPath);
var entries = {},
entry, dirname, basename, pathname, extname;
for (var i = 0; i < files.length; i++) {
entry = files[i];
dirname = path.dirname(entry); //返回文件路径
extname = path.extname(entry); //返回文件扩展名
basename = path.basename(entry, extname); //提取出用 ‘/' 隔开的path的最后一部分,过滤entry中的extname字符
pathname = path.join(dirname, basename); //将多个参数组合成一个 path
pathname = pathDir ? pathname.replace(new RegExp('^' + pathDir), '') : pathname;
entries[pathname] = basename;
}
return entries;
}
我想知道怎么把不定个数个scss文件打包到build目录下
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你不会在scss中import 吗?
webpack.config.js配置如下
var ExtractTextPlugin = require("extract-text-webpack-plugin");//extract-text-webpack-plugin安装此插件
module:{
loaders:[
{test: /.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader")}
]
},
plugins:[
new ExtractTextPlugin("css/[name].css")//则会生成一个css文件
]
比如你的js文件中这样引入即可:
import './css/lib/bootstrap.min.css'
import './css/test.css';
问题出在合并scss文件的过程,我想把所有scss文件合并,只能在js入口文件里import么?
不是只能在入口文件import,可以在所有会打包进去的文件中进行import,scss文件中也可以import
只要保证scss文件有使用到,一条链下来都会打包进去的