【问题标题】:gulp-uglify doesn`t workgulp-uglify 不起作用
【发布时间】:2016-08-31 08:27:47
【问题描述】:

我希望任务 'js' 在目录中获取 .js(& 不是 .min.js) 文件,对其进行 uglify 并将它们放在同一个目录中,后缀为:'.min',但它不适用于许多文件在目录中,我的任务:

gulp.task('js', function(cb) {
    pump([
            gulp.src(['js/*.js', '!js/*.min.js']),
            uglify(),
            rename({suffix: '.min'}),
            gulp.dest('js/signup/' + pathDist)
        ],
            cb
        );
 });

&我的“监视”任务:

gulp.task('watch', ['js'], function() {
    gulp.watch(['js/*.js', '!js/*.min.js'], ['js']);
});

gulpfile.js:

var gulp            = require('gulp'), // Подключаем Gulp
    cssnano         = require('gulp-cssnano'), // Подключаем пакет для минификации CSS
    concat          = require('gulp-concat'), // Подключаем gulp-concat (для конкатенации файлов)
    rename          = require('gulp-rename'), // Подключаем библиотеку для переименования файлов
    uglify          = require('gulp-uglifyjs'), // Подключаем gulp-uglifyjs (для сжатия JS)
    del             = require('del'), // Подключаем библиотеку для удаления файлов и папок
    imagemin        = require('gulp-imagemin'), // Подключаем библиотеку для работы с изображениями
    pngquant        = require('imagemin-pngquant'), // Подключаем библиотеку для работы с png
    autoprefixer    = require('gulp-autoprefixer'), // Подключаем библиотеку для автоматического добавления префиксов
    cache           = require('gulp-cache'), // Подключаем библиотеку кеширования
    svgmin          = require('gulp-svgmin'), //Подключаем svgmin
    open            = require('gulp-open'), // Подключаем библиотеку открытия файлов
    bulkSass        = require('gulp-sass-bulk-import'), // импорт путей в Sass
    pump            = require('pump'),
    sass            = require('gulp-sass'); //Подключаем Sass пакет

package.json:

"dependencies": {
    "del": "^2.2.0",
    "pump": "^1.0.1",
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^3.1.0",
    "gulp-cache": "^0.4.5",
    "gulp-concat": "^2.6.0",
    "gulp-cssnano": "^2.1.2",
    "gulp-imagemin": "^3.0.3",
    "gulp-open": "^2.0.0",
    "gulp-rename": "^1.2.2",
    "gulp-sass": "^2.2.0",
    "gulp-sass-bulk-import": "^1.0.1",
    "gulp-svgmin": "^1.2.2",
    "gulp-uglifyjs": "^0.6.2",
    "imagemin-pngquant": "^5.0.0"
  }

目录有5个文件.js,5个文件.min.js & 1个.php; 任务获取目录中的第一个文件 .js,使用它并停止... 如何处理目录中的许多文件?

【问题讨论】:

  • 这并不能解释您的问题,但您的 glob 中有一个错误:要排除 .min.js 文件,您需要 !js/*.min.js!js/.min.js 只会排除标题为“. min.js")
  • 这里缺少一些信息:您是否安装了required pump、gulp-uglify 和 gulp-rename?控制台记录了什么? (如果泵正在工作,它应该会给你一个详细的错误信息)
  • 我在这里犯了这个错误,对不起.. 但是我的代码很清楚这个错误
  • 控制台没有给出任何错误,任务使用第一个 js 文件并停止

标签: gulp gulp-watch gulp-uglify


【解决方案1】:

问题是gulp-uglifyjs uglizes 自动缩小 - 所以你所有的 js 文件都在被处理,但只有一个(连接的)文件被输出。生成的一个文件与第一个源文件同名,所以乍一看好像只处理了第一个文件。

出于这个原因,gulp-uglifyjshas been deprecated“这个插件已被列入黑名单,因为它依赖于 Uglify 来连接文件而不是使用 gulp-concat,这打破了“它应该做一件事”的范式。”

gulp-uglifyjs 确实有效。但是如果要确保单独输出 uglified 文件,请使用gulp-uglify。我敢打赌你已经知道如何做到这一点,但我会解释它以防它帮助其他人

  1. 通过命令行,更改您的 package.json 以便您使用 gulp-uglify
$ cd your-main-project-directory
$ npm uninstall -S gulp-uglifyjs
$ npm install -S gulp-uglify
  1. 在您的 gulpfile.js 中,将“uglify”var 定义为 uglify = require('gulp-uglify') 而不是 uglify = require('gulp-uglifyjs')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    相关资源
    最近更新 更多