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. Office 2010 打开文件后所有的格式成了时间的解决方法

    最新不知道什么原因,每一个 Excel 文件打开后,时需的数据都成了时间格式. 而且改都改不了,改了后第二次打开又成了这个样子. 最后找到解决方法. 如下动画,将 [$F400] 数据格式删除就可以. ...

  2. wpf揭秘

    2.4属性元素 以下c#和xaml是一致的 Rectangle r = new Rectangle(); r.Width = 40; r.Height = 40; r.Fill = Brushes.B ...

  3. 突破本地离线存储的JS库 localforage

    localforage 简介 项目地址 https://github.com/localForage/localForage API中文地址 https://localforage.docschina ...

  4. MySQL 建表语句 create table 中的列定义

    MySQL 建表语句 create table 中的列定义: column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value ...

  5. 单页面应用(SPA)重新部署后,正在浏览的页面如何更新缓存?

    当单页面的系统在重新部署更新时,此时正在浏览网页,并且已经在网页内的用户,始终会使用老的js与css文件,一直在使用已经缓存了的静态资源. 所有的缓存问题焦点都在index.html上,只要index ...

  6. Intellj(IDEA)中修改No artifacts configured问题

    如下图,配置Deployment的时候,出现No artifacts configured错误 解决的方法

  7. HanLP中人名识别分析详解

    HanLP中人名识别分析详解 在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: l ·名字识别的问题 #387 l ·机 ...

  8. WyBox用usb口驱动4G模块EC20

    按照: http://wiki.openwrt.org/doc/howtobuild/wireless-router-with-a-3g-dongle 然后: 进入linux-3.10.49/driv ...

  9. dragino2 ar9331将LED管脚当做普通gpio使用

    1. 将gpio13和gpio17也当作普通gpio使用,修改 target/linux/ar71xx/files/arch/mips/ath79/mach-dragino2.c文件如下 /* * D ...

  10. Excel技巧--漏斗图让转化率直观明了

    当要实现如上图那样表现转化率等漏斗形图表时,可以这么做: 1.选择表格,点击“插入”-->“二维条形图”-->堆积条形图类型: 2.点击选中图表,点击”设计“-->“选择数据”: 将 ...