1、webpack.start.js:

var webpack = require('webpack');
var SpritesmithPlugin = require('webpack-spritesmith');
var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var templateFunction = function(data) {
var perSprite = data.sprites.map(function(sprite) {
var $name = sprite.name,
$width = parseInt(sprite.px.width) / 2 + 2,
$height = parseInt(sprite.px.height) / 2 + 2,
$ofx = parseInt(sprite.px.offset_x) / 2 + 1,
$ofy = parseInt(sprite.px.offset_y) / 2 + 1,
$tw = sprite.total_width / 2,
$th = sprite.total_height / 2;
return '.bg-N { background-image: url(I);width: Wpx; height: Hpx; background-position: Xpx Ypx; background-size:Mpx,Npx;background-repeat:no-repeat;display:inline-block;}'
.replace('N', $name)
.replace('I', data.sprites[0].image)
.replace('W', $width)
.replace('H', $height)
.replace('X', $ofx)
.replace('Y', $ofy)
.replace('M', $tw)
.replace('N', $th);
}).join('\n');
return perSprite;
}; var config = {
entry: {
app: ["./system.js"] //导入入口文件
},
output: { //输出目录
path: __dirname,
publicPath: "",
filename: 'css.bundle.js',
},
module: {
loaders: [{
test: /\.jsx?$/,
use: 'babel-loader?presets[]=react,presets[]=es2015',
exclude: /node_modules/
}, {
test: /\.scss$/, //变异scss
use: ExtractTextPlugin.extract({
fallback: "style-loader",
loader: "css-loader!autoprefixer-loader?{browsers:['last 6 Chrome versions', 'last 3 Safari versions', 'iOS >= 5', 'Android >= 4.0']}!sass-loader",
}),
}, {
test: /\.png$/,
use: [
'file-loader?name=../img/[name].[ext]'
]
}]
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new ExtractTextPlugin('css/style.css'), //独立抽出编译后的css
new SpritesmithPlugin({
src: {
cwd: path.resolve(__dirname, 'img/icon'),
glob: '*.png'
},
target: {
image: path.resolve(__dirname, 'img/sprite.png'),
css: [
[path.resolve(__dirname, 'scss/_bg.scss'), {
format: 'function_based_template'
}]
]
},
customTemplates: {
'function_based_template': templateFunction,
},
apiOptions: {
cssImageRef: "../img/sprite.png"
},
spritesmithOptions: {
padding: 20
}
}),
/*new HtmlWebpackPlugin({
title: 'index',
hash:true,
template: 'index.ejs', // Load a custom template (ejs by default see the FAQ for details)
})*/
]
};
module.exports = config;

2、webpack.build.js:

var webpackUglifyJsPlugin = require('webpack-uglify-js-plugin');
var path = require('path');
var startConfig = require('./webpack.start.js');
startConfig.plugins.push(new webpackUglifyJsPlugin({ //生产版webpack配置多了压缩插件,这样可以使用css编译后的东西更小
cacheFolder: path.resolve(__dirname, 'public/cached_uglify/'),
debug: true,
minimize: true,
sourceMap: false,
output: {
comments: false
},
compressor: {
warnings: false
}
}));
var buildConfig=startConfig;
module.exports = buildConfig;

3、server.js:

var config = require("./webpack.start.js");
var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server'); config.entry.app.unshift("webpack-dev-server/client?http://0.0.0.0:8089/"); var compiler = webpack(config); //运行webpack
var server = new WebpackDevServer(compiler, { //运行webpack.dev.server
publicPath: config.output.publicPath,
stats: {
host:'0.0.0.0',
colors: true,
hot:true,
progress:true,
}
});
server.listen(8089);

4、system.js:

import "./css/style.scss"; //导入样式文件,这样webpack就可以编译scss文件了

  

webpack实现scss编译配置的更多相关文章

  1. webpack入门+react环境配置

    小结放在前:这篇文章主要是为下一篇的react提前铺好路,webpack是一个前端资源模块化管理和打包工具,说白了就是方便我们管理自己的常用的一些代码,比如你开发中用到sass以及jade同时用到es ...

  2. webpack 2.6.1配置笔记

    2017-09-11更新:更新到webpack 2.6.1所对应的配置,完善部分代码注释. 由于最近在vue-cli生成的webpack模板项目的基础上写一个小东西,开发过程中需要改动到build和c ...

  3. 使用可视化图表对 Webpack 2 的编译与打包进行统计分析

    此文主要对使用可视化图表对 Webpack 2 的编译与打包进行统计分析进行了详细地讲解,供您更加直观地参考. 在之前更新的共十七章节中,我们陆续讲解了 Webpack 2 从配置到打包.压缩优化到调 ...

  4. babel使用入门以及使用webpack+babel来"编译"你的JS代码

    Babel是一个广泛使用的转码器,可以将ES6代码转为ES5,从而在现有的环境中执行. 这是一个开端,以后遇到问题,也会持续记录. 一.babel配置 官网有更详细的配置教程:https://www. ...

  5. 【翻译】Webpack 4 从0配置到生产模式

    查看原文 webpack 4 发布了! webpack 4 作为一个零配置的模块打包器 webpack 是强大的并且有许多独一无二的特点但是有一个痛点就是配置文件. 在中型到大型项目中为webpack ...

  6. vue+vux+es6+webpack移动端常用配置步骤

    1.创建项目(vue项目的流程就不多讲了)2.cnpm install vux --save3.在build/webpack.base.conf.js配置:const vuxLoader = requ ...

  7. vue-cli安装webpack项目及初始配置

    这个下载包是自己基于 webpack 搞的,可以看看https://github.com/chichengyu/webpack vue-cli安装 输入 npm install vue-cli -g ...

  8. 从 Webpack 到 Snowpack, 编译速度提升十倍以上——TRPG Engine迁移小记

    动机 TRPG Engine经过长久以来的迭代,项目已经显得非常臃肿了.数分钟的全量编译, 每次按下保存都会触发一次10s到1m不等的增量编译让我苦不堪言, 庞大的依赖使其每一次编译都会涉及很多文件和 ...

  9. 转载:Centos7 从零编译配置Memcached

    序言 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memca ...

随机推荐

  1. php+js实现重定向跳转并post传参

    页面重定向跳转并post传参 $mdata=json_encode($mdata);//如果是字符串无需使用json echo " <form style='display:none; ...

  2. 安装mysql时包冲突解决方法

    报错信息如下: 解决办法: 在卸载代码上加上不检查关联信息即可(rpm -ev mysql-libs-5.1.73-7.el6.x86_64 --nodeps) 检查服务器是否还有mysql安装包:r ...

  3. 洛谷 5291 [十二省联考2019]希望(52分)——思路+树形DP

    题目:https://www.luogu.org/problemnew/show/P5291 考场上写了 16 分的.不过只得了 4 分. 对于一个救援范围,其中合法的点集也是一个连通块. 2n 枚举 ...

  4. 关于Firedac的一点看法

    Firedac集成在Delphi中已经有几个版本了,偶尔也拖到Form上试着用用,虽然知道Firedac有可能是最终的(或很很长时间内)数据访问技术,可一直不能接受它,其中最大的原因就是过于“复杂” ...

  5. nginx基于目录的映射:

    nginx基于目录的映射: location /wxchat/ { #proxy_redirect off; proxy_set_header Host $host; proxy_set_header ...

  6. camera-arm-RPI

    这个属于先收藏着,知道有个开源的东西. luvcview是一个开源项目,专注于UVC摄像头的测试,只要您的摄像头支持UVC驱动,即可使用luvcview测试程序,如何知道自己的摄像头是不是支持UVC驱 ...

  7. Python正则表达式与re模块

    在线正则表达式测试 http://tool.oschina.net/regex/ 常见匹配模式 模式 描述 \w 匹配字母数字及下划线 \W 匹配非字母数字下划线 \s 匹配任意空白字符,等价于 [\ ...

  8. C/S,B/S的应用区别

    C/S,B/S的应用区别 C/S即大家熟知的客服机和服务器结构通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销 B/S结构即浏览器和服务 ...

  9. https 不检验证书

    System.Net.ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErro ...

  10. 进程守护为什么选择pm2

    官网:::  https://pm2.io/doc/en/runtime/quick-start/ 前言 源码:https://github.com/Unitech/pm2 这里的pm2并不是大气污染 ...