From ed19421a1086bd3512cb1fe86ba24d2ae498d2ff Mon Sep 17 00:00:00 2001
From: sunfutao <810479416@qq.com>
Date: Fri, 22 May 2020 18:16:19 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B8=85=E9=99=A4=E6=B3=A8?=
=?UTF-8?q?=E9=87=8A=E4=BB=A3=E7=A0=81=20=E6=94=AF=E6=8C=81sass=EF=BC=8Cle?=
=?UTF-8?q?ss?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.CN.md | 50 +++++++++++++----
README.md | 53 +++++++++++++-----
demo/loaders/sprite-smith-loader.js | 4 +-
demo/resource/sprites/1590130839494_smith.png | Bin 11008 -> 0 bytes
demo/resource/sprites/1590130873790_smith.png | Bin 11008 -> 0 bytes
demo/webpack.config.js | 2 +-
dist/index.js | 4 +-
package.json | 2 +-
8 files changed, 84 insertions(+), 31 deletions(-)
delete mode 100644 demo/resource/sprites/1590130839494_smith.png
delete mode 100644 demo/resource/sprites/1590130873790_smith.png
diff --git a/README.CN.md b/README.CN.md
index 46130bf..b0e10e2 100644
--- a/README.CN.md
+++ b/README.CN.md
@@ -1,9 +1,3 @@
-
sprite-smith-loader
@@ -11,6 +5,8 @@

## 介绍
sprite-smith-loader是一款自动生成雪碧图工具,你可以在webpack中使用它,它会自动生成雪碧图并修改相应的css代码。
+
+支持**CSS**、**SASS**、**LESS**。
## 安装
下载sprite-smith-loader
@@ -18,7 +14,7 @@ sprite-smith-loader是一款自动生成雪碧图工具,你可以在webpack中
npm install --save-dev sprite-smith-loader
```
## 配置
-将loader添加到webpack的配置中,必须放在css-loader之后
+将loader添加到webpack的配置中,必须放在css-loader之后,别忘了添加file-loader或url-loader处理图片路径。
**webpack.config.js**
@@ -26,17 +22,47 @@ npm install --save-dev sprite-smith-loader
module.exports = {
module: {
rules: [
- {
- test: /\.css$/i,
- use: ['style-loader', 'css-loader','sprite-smith-loader'],
- },
+ {
+ test: /\.(png|jpe?g|gif)$/i,
+ loader: 'file-loader',
+ options: {
+ outputPath: 'images',
+ },
+ },
+ {
+ test: /\.css$/i,
+ use: ['style-loader', 'css-loader','sprite-smith-loader'],
+ }
+ ],
+ },
+};
+```
+配合SASS
+
+```
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.(png|jpe?g|gif)$/i,
+ loader: 'file-loader',
+ options: {
+ outputPath: 'images',
+ },
+ },
+ {
+ test: /\.(sass|scss|css)/,
+ use: ['style-loader', 'css-loader','sprite-smith-loader',"sass-loader"],
+ }
],
},
};
+
```
+
## 使用
-修改你的css文件
+修改你的 CSS/SCSS/SASS/LESS 文件
```
.my_bg_1{
diff --git a/README.md b/README.md
index cb2c352..a4e6f56 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,3 @@
-
sprite-smith-loader
@@ -13,13 +7,17 @@
:rocket: [中文文档点这里](https://github.com/sunft1996/sprite-smith-loader/blob/master/README.CN.md/)
## Introduce
Sprite Smith loader is a tool for automatically generating CSS Sprites. You can use it in webpack. It will automatically generate CSS Sprites and modify the corresponding CSS code.
+
+supports **CSS**、**SASS**、**LESS**.
## Getting Started
To begin, you'll need to install sprite-smith-loader:
```
-npm install --save-dev css-loader
+npm install --save-dev sprite-smith-loader
```
-Then add the plugin to your webpack config. For example:
+Then add the plugin to your webpack config. And don't forget to add the file-loader or url-loader.
+
+For example:
**webpack.config.js**
@@ -27,17 +25,46 @@ Then add the plugin to your webpack config. For example:
module.exports = {
module: {
rules: [
- {
- test: /\.css$/i,
- use: ['style-loader', 'css-loader','sprite-smith-loader'],
- },
+ {
+ test: /\.(png|jpe?g|gif)$/i,
+ loader: 'file-loader',
+ options: {
+ outputPath: 'images',
+ },
+ },
+ {
+ test: /\.css$/i,
+ use: ['style-loader', 'css-loader','sprite-smith-loader'],
+ },
+ ],
+ },
+};
+```
+with SaSS
+
+```
+module.exports = {
+ module: {
+ rules: [
+ {
+ test: /\.(png|jpe?g|gif)$/i,
+ loader: 'file-loader',
+ options: {
+ outputPath: 'images',
+ },
+ },
+ {
+ test: /\.(sass|scss|css)/,
+ use: ['style-loader', 'css-loader','sprite-smith-loader',"sass-loader"],
+ }
],
},
};
+
```
## Usage
-Modify your CSS file
+Modify your CSS/SCSS/SASS/LESS file
```
.my_bg_1{
height: 100px;
diff --git a/demo/loaders/sprite-smith-loader.js b/demo/loaders/sprite-smith-loader.js
index c40a9d3..a7d020c 100644
--- a/demo/loaders/sprite-smith-loader.js
+++ b/demo/loaders/sprite-smith-loader.js
@@ -8,9 +8,9 @@ module.exports = function (source) {
let outputName = new Date().getTime() + '_smith.png';
// 清除css中的注释
- const cleanSource = source.replace(/\/\*[\w\W]*\*\//g, '')
-
+ const cleanSource = source.replace(/(\/\*.*\*\/)|\/\/.*/g, '')
let imgs = cleanSource.match(/url\(.+_sprite.+\)/g);
+ if(!imgs) return cleanSource;
const callback = this.async();
diff --git a/demo/resource/sprites/1590130839494_smith.png b/demo/resource/sprites/1590130839494_smith.png
deleted file mode 100644
index 7dd9b8b7ac149e88c608cc500e480475d052365b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 11008
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