当我运行简单任务时,gulp-imagemin jpegtran-bin不起作用

Toa*_*ran 1 javascript node.js gulp gulp-imagemin

我想将图像压缩并通过管道传递到构建目录,但是运行任务后,构建文件夹为空。这是我的任务:

// Gulp.js configuration
// modules
const gulp = require('gulp')
const newer = require('gulp-newer')
const imagemin = require('gulp-imagemin')

// development mode?
// let devBuild = (process.env.NODE_ENV !== 'production')

// folders
const folder = {
  src: 'src/',
  build: 'build/'
}

gulp.task('images', function () {
  var out = folder.build + 'images/'
  return gulp.src(folder.src + 'images/**/*')
              .pipe(newer(out))
              .pipe(imagemin({optimizationLevel: 5}))
              .pipe(gulp.dest(out))
})
Run Code Online (Sandbox Code Playgroud)

我得到的错误,当我试图运行gulp images,不能发现/node_modules/jpegtran-bin/vendor/jpegtrannode_modules

[10:07:18] Using gulpfile ~/Desktop/MyProjects/project1/gulpfile.js
[10:07:18] Starting 'images'...

events.js:182
      throw er; // Unhandled 'error' event
      ^
Error: spawn /home/toantd/Desktop/MyProjects/project1/node_modules/jpegtran-bin/vendor/jpegtran ENOENT
at exports._errnoException (util.js:1026:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:189:19)
at onErrorNT (internal/child_process.js:366:16)
at _combinedTickCallback (internal/process/next_tick.js:102:11)
at process._tickCallback (internal/process/next_tick.js:161:9)
Run Code Online (Sandbox Code Playgroud)

我还尝试通过一些链接来解决此问题:

重新安装节点模块

Npm重建

这是我的项目结构:

.
??? build
?   ??? css
?   ??? html
?   ??? images
?   ??? js
??? gulpfile.js
??? package.json
??? src
?   ??? html
?   ??? images
?   ?   ??? bg.jpg
?   ?   ??? my-logo.png
?   ??? js
?   ??? scss
??? yarn.lock
Run Code Online (Sandbox Code Playgroud)

注意我在公司代理下工作,但是我确定已经为npm和git设置了代理。

谁能帮我?先感谢您。

Dou*_*esh 5

我有一个类似的问题。我的供应商文件夹存在,但其中没有exe。这可能不是您的确切问题。我的解决方案是对该程序包进行重建。

npm rebuild jpegtran-bin
Run Code Online (Sandbox Code Playgroud)

我首先想知道是什么导致了这个问题。似乎缺少对包装本身的支持。