使用
tinypng-nokey
压缩图片时,网上给的方案的代码都是这样的:
const gulp = require('gulp');
const tinypng_nokey = require('gulp-tinypng-nokey');
const path = './test/raw-assets/';
gulp.task('tiny_png_1', function () {
console.log(' ------------ start deal path: ', path);
gulp.src([`${path}**/*.*`])
.pipe(tinypng_nokey())
.pipe(gulp.dest(path))
.on("end", () => {
console.log(' ------------ finish deal path: ', path);
});
});
但如果图片太多,就会出现错误:gulp-tinypng-nokey [error]: xxx Too many files uploaded
。

可以换种方法,就是遍历子文件夹,用队列的方式处理每个子文件夹。代码如下:
const gulp = require('gulp');
const tinypng_nokey = require('gulp-tinypng-nokey');
const fs = require('fs');
const path = './test/raw-assets/';
gulp.task('tiny_png_2', function () {
console.log(' ------------------------ start deal path: ', path);
fs.readdir(path, (err, folderNames) => {
console.log('sub folder count = ', folderNames.length);
let totalCount = folderNames.length;
let finishCount = 0;
let folderPath = path + folderNames[finishCount];
let finishCb = () => {
finishCount++;
if (finishCount == totalCount) {
console.log(' ------------------------ finish deal path: ', path);
return;
} else {
folderPath = path + folderNames[finishCount];
dealFolder(folderPath, finishCb);
dealFolder(folderPath, finishCb);
});
function dealFolder(folderPath, callback) {
console.log(' ------------ start deal folder: ', folderPath);
gulp.src([`${folderPath}/*.*`])
.pipe(tinypng_nokey())
.pipe(gulp.dest(folderPath))
.on("end", () => {
console.log(' ------------ finish deal folder: ', folderPath);
callback();
});
输出如下:
> tiny_png_2: Starting 'tiny_png_2'...
> tiny_png_2: ------------------------ start deal path: ./test/raw-assets/
> tiny_png_2: Finished 'tiny_png_2' after 1.32 ms
> tiny_png_2: sub folder count = 5
> tiny_png_2: ------------ start deal folder: ./test/raw-assets/02
> tiny_png_2: gulp-tinypng-nokey : [tinypng request] 0275e94c-56a7-410f-bd1a-fc7483f7d14a.cea68.png
> tiny_png_2: gulp-tinypng-nokey : [compressing] Ok 0275e94c-56a7-410f-bd1a-fc7483f7d14a.cea68.png (100.0%)
> tiny_png_2: gulp-tinypng-nokey : [compress completed] skiped: 0 imgs, compressed: 1 imgs, totalSize: 100%
> tiny_png_2: ------------ finish deal folder: ./test/raw-assets/02
> tiny_png_2: ------------ start deal folder: ./test/raw-assets/1a
> tiny_png_2: gulp-tinypng-nokey : [tinypng request] 1a74add5b.9e607.png
> tiny_png_2: gulp-tinypng-nokey : [compressing] Ok 1a74add5b.9e607.png (25.9%)
> tiny_png_2: gulp-tinypng-nokey : [compress completed] skiped: 0 imgs, compressed: 2 imgs, totalSize: 25.97%
> tiny_png_2: ------------ finish deal folder: ./test/raw-assets/1a
> tiny_png_2: ------------ start deal folder: ./test/raw-assets/1e
> tiny_png_2: gulp-tinypng-nokey : [tinypng request] 1e36f134f.c8057.png
> tiny_png_2: gulp-tinypng-nokey : [compressing] Ok 1e36f134f.c8057.png (16.2%)
> tiny_png_2: gulp-tinypng-nokey : [tinypng request] 1ec5d7d35.61c8f.png
> tiny_png_2: gulp-tinypng-nokey : [compressing] Ok 1ec5d7d35.61c8f.png (35.9%)
> tiny_png_2: gulp-tinypng-nokey : [tinypng request] 1ed509849.f4f4e.png
> tiny_png_2: gulp-tinypng-nokey : [compressing] Ok 1ed509849.f4f4e.png (20.7%)
> tiny_png_2: gulp-tinypng-nokey : [compress completed] skiped: 0 imgs, compressed: 5 imgs, totalSize: 21.44%
> tiny_png_2: ------------ finish deal folder: ./test/raw-assets/1e
> tiny_png_2: ------------ start deal folder: ./test/raw-assets/3e
> tiny_png_2: gulp-tinypng-nokey : [tinypng request] 3e3082a2-31b7-41fd-b92f-f8e11e2a85a0.c46a2.png
> tiny_png_2: gulp-tinypng-nokey : [compressing] Ok 3e3082a2-31b7-41fd-b92f-f8e11e2a85a0.c46a2.png (76.2%)
> tiny_png_2: gulp-tinypng-nokey : [compress completed] skiped: 0 imgs, compressed: 6 imgs, totalSize: 22.75%
> tiny_png_2: ------------ finish deal folder: ./test/raw-assets/3e
> tiny_png_2: ------------ start deal folder: ./test/raw-assets/6d
> tiny_png_2: gulp-tinypng-nokey : [tinypng request] 6d0b6368-8af8-4f81-b5b8-e708d696784f.4fb85.jpg
> tiny_png_2: gulp-tinypng-nokey : [compressing] Ok 6d0b6368-8af8-4f81-b5b8-e708d696784f.4fb85.jpg (99.3%)
> tiny_png_2: gulp-tinypng-nokey : [compress completed] skiped: 0 imgs, compressed: 7 imgs, totalSize: 38.16%
> tiny_png_2: ------------ finish deal folder: ./test/raw-assets/6d
> tiny_png_2: ------------------------ finish deal path: ./test/raw-assets/
> tiny_png_2: COMPLETED
使用tinypng-nokey压缩图片时,网上给的方案的代码都是这样的:const gulp = require('gulp');const tinypng_nokey = require('gulp-tinypng-nokey');const path = './test/raw-assets/';gulp.task('tiny_png_1', function () { c...
与gulp-tinypng-compress的主要区别
添加了新选项(keepMetadata)以保留元数据。 当前仅支持版权和创建日期。
添加了新选项(keepOriginal)以覆盖原始图像,而不是在输出路径中创建新的压缩文件。
将minimatch插件更新为当前版本,以避免过时的警告。
修复了从API接收到的网关错误的问题。 错误时,插件会尝试默认10次重新尝试,如果服务器仍然无法访问(感谢@kevinranks)压缩下一张图像,则跳过该图像。
错误时,仍将为所有成功压缩的文件写入签名
与gulp-tinypng的主要区别:
文件签名检查(为尽量减少不必要的API调用,可选)
在压缩图像下载上没有创建临时文件/文件夹-直接从tinypng馈送到管道
旨在通过gulp&grunt(以及其他工具)标准化tinypng功能集。
需要节点6或以上
使用安装-在项目文件夹中,运行:
npm install gulp-tinypng-compress
要运行测试:
npm test
var gulp = require ( 'gulp' ) ;
var tinypng = r
npm install --save-dev gulp-ejs
然后,将其添加到您的gulpfile.js :
var ejs = require ( "gulp-ejs" )
gulp . src ( "./templates/*.ejs" )
. pipe ( ejs ( {
msg : "Hello Gulp!"
} ) )
. pipe ( gulp . dest ( "./dist" ) )
监视模式错误处理(适用于gulp v3或更低版本)
如果要在监视/传递负载任务中使用gulp-ejs ,则可能希望避免gulp因错误而退出,例如,当部分文件为ENOENT或ejs语法错误时。
这是有关如何使其工作的示例:
var ejs = require ( 'gulp-ejs' )
var log = require ( 'fancy-log' )
gulp . src ( './templates/*.ejs' )
. pipe ( ejs ( {
msg : 'Hell
$ npm init --yes
$ npm install --save-dev gulp gulp-node-slate
$ f=https://raw.githubusercontent.com/center-key/gulp-node-slate/master/gulpfile.js
$ curl --remote-name $f
$ cat gulpfile.js
$ node node_modules/gulp/bin/gulp.js slate
$ open build/in
生产者Provider线程为一,主要进行深搜目录文件;、
消费者Consumer线程多个, 因为RPC服务调用时延较长, 启用多个线程请求服务。
持久化线程Persist 将已经消费的消息存放在writeQueue, 启用一个线程从writeQueue取数据进行持久化到log.pic,这样每次启动压缩的时候,可以避免重复消费。 进而避免同一目录进行多次压缩
api_key.properti
gulp详细入门教程传送门: http://blog.csdn.net/x550392236/article/details/77117023
一、安装需要的包
npm install –save-dev gulp gulp-imagemin gulp-tinypng-compress gulp-tinypng-nokey
二、配置gulpfile.jsvar gulp = require(
图片的压缩处理可以很大程度提高网页性能。在实际工程中,借助自动化工具可以很方便地实现图片的压缩,本文主要介绍gulp工作流下图片的压缩方法。
1.基本使用方式对比
gulp-imagemin
1.功能:压缩图片
2.支持的图片格式:png,jpg,svg和gif
3.使用方式:
本地安装:npm install gulp-imagemin --save-dev
说明:–save-dev 保存配...
首先,将gulp-mustache安装为开发依赖项:
npm install --save-dev gulp-mustache
然后,将其添加到您的gulpfile.js :
var mustache = require ( "gulp-mustache" ) ;
gulp . src ( "./templates/*.mustache" )
. pipe ( mustache ( {
msg : "Hello Gulp!"
} ) )
. pipe ( gulp . dest ( "./dist" ) ) ;
您还可以传入表示小胡子局部及其内容的对象,作为调用mustache()的第三个参数,如下所示:
使用键/值对:
gulp . src ( "./templates/*.mustache" )
. pipe ( mustache ( {
msg : "Hello Gulp!" ,
nested_value : "I am nested." ,
another_value : "1 2 3"
} , { } ,
在做一个资料片专题的时候遇到了图片太多,png图片过大导致加载过慢,图片都堆叠在了一起。为了解决这个问题,发现下面这篇文件讲得非常好!赞一个。
如何把网页中要用到的图片压缩到最小,这是我们前端攻城师们在写网页时都会考虑的一个问题,今天小坊给各位带来了给前端攻城师们真正的良心网站---TinyPNG。
只需要简单的两步就可以把你要压缩的PNG格式图片压缩到小很多又基本上不会影响图片的质量:
1、编写css代码时,因为有自动保存,可能一行样式还没写全,文件就保存了,这样的话 less() 编译会报错,如下:
2、我们发现进程虽然没有挂掉,但是再修改css文件时,watch监听就失效了。这是因为 less() 编译导致的。解决方案如下:
手动加入错误提示
gulp.task('css_main', function(){
return ...
当用linux做高并发服务器时,会遇到"Too many open files"的错误。
Linux是有文件句柄限制的(open files),而且Linux默认不是很高,一般都是1024,做高并发生产服务器用其实很容易就达到这个数量。
在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:
ulimit -a
core file size (blo
windows中的项目,到了linux后,屡次报出toomanyfiles即打开文件过多的错误。应该有两个解决方向,
1.查看自己的代码中是否存在未关闭的流,如果存在的话,一定要将所有的流全部关闭。
2.可以在linux系统中增加最大句柄数。即open files
输入 ulimit -a 可以查看当前的最大打开句柄数。
然后两...
Gulp-sass 插件是用于将 Sass 样式表编译为 CSS 的插件。使用该插件需要先安装 Node.js 和 npm,然后使用 npm 安装 gulp 和 gulp-sass 插件。
下面是使用 gulp-sass 插件的一个简单示例:
1. 在项目目录中执行以下命令以安装 gulp 和 gulp-sass 插件:
npm install gulp gulp-sass
2. 创建一个名为 gulpfile.js 的文件,并在该文件中添加以下代码:
```javascript
const gulp = require('gulp');
const sass = require('gulp-sass');
gulp.task('sass', function () {
return gulp.src('./sass/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./css'));
gulp.task('watch', function () {
gulp.watch('./sass/**/*.scss', gulp.series('sass'));
gulp.task('default', gulp.series('sass', 'watch'));
3. 在项目目录中执行以下命令以运行 gulp:
这将自动监视并编译 sass 文件夹中的所有 Sass 文件,并将生成的 CSS 文件保存到 css 文件夹中。