相关文章推荐
深沉的凉茶  ·  GitHub 标星 6.4K+!1344 ...·  9 月前    · 
讲道义的热水瓶  ·  MySQL 5.7.30 ...·  1 年前    · 

使用 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 安装 gulpgulp-sass 插件。 下面是使用 gulp-sass 插件的一个简单示例: 1. 在项目目录中执行以下命令以安装 gulpgulp-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 文件夹中。