2016-03-12 2 views
0

Недавно я начал использовать Gulp для автоматического определения, minifycss и минимизации моего JS. Прямо сейчас, все файлы, которые получают autofrefixed, minified, находятся в папке dist. Есть ли способ, я могу указать HTML файл в эту уменьшенной версии без ручного перепечатывания следующего:Использование Gulp и minified CSS/JS

<script src="js/custom.js"></script> 

к:

<script src="dist/custom.min.js"></script> 

туда и обратно?

Прямо сейчас, когда я разрабатываю, я редактирую от 5 до 10 файлов css и JS, но когда я их редактирую, это очевидно в unminified, unautoprefixed версии. Я уверен, что это не так, как разработчики делают это, поэтому я предполагаю, что есть такой шаг, который мне не хватает ...

+0

«вручную повторно вводить в:» .. что это значит, что именно. Не совсем уверен, чего вы добиваетесь, но вы можете проверить [wiredep] (https://www.npmjs.com/package/wiredep) –

+0

при его развертывании, он хочет автоматически заменить URL на 1 js с помощью сокращенная версия js. - Вот что я получил здесь, –

+0

вы слышали о 'gulp-inject', который должен соответствовать счету, его не так, как если бы он отредактировал путь .. но тогда вы должны вводить минированные/неминифицированные оба пути, используя' gulp- inject' – harishr

ответ

0

Вы должны посмотреть на использование source maps. Из этой статьи:

В принципе, это способ сопоставить объединенный/мини-файл с незастроенным состоянием. Когда вы создаете для производства, наряду с минимизацией и объединением ваших файлов JavaScript, вы создаете исходную карту, в которой содержится информация о ваших исходных файлах. Когда вы запрашиваете определенную строку и номер столбца в сгенерированном JavaScript, вы можете выполнить поиск на исходной карте, которая возвращает исходное местоположение. Инструменты разработчика (в настоящее время ночные сборки WebKit, Google Chrome или Firefox 23+) могут автоматически анализировать исходную карту и делать ее видимой, как если бы вы запускали unminified и uncombined файлы.

gulp-sourcemaps - то, что вам нужно использовать. Вы не указываете, какие плагины вы используете, но есть хороший шанс, что они have support for source maps.

Вот простой пример того, как вы могли бы использовать:

var gulp = require('gulp'); 
var minify = require('gulp-uglify'); 
var sourcemaps = require('gulp-sourcemaps'); 

gulp.task('minify', function() { 
    gulp.src('src/*.js') 
     .pipe(sourcemaps.init()) // Initialize the source maps. 
     .pipe(minify())    // Do your minification, concatenation, etc. 
     .pipe(sourcemaps.write()) // Write the source maps. 
     .pipe(gulp.dest('dist')); // Write the minified files. 
}); 

Просто убедитесь, что исходные файлы unminified также является сервер на вашем веб-сервере, так что браузер может загрузить их.

Это также имеет дополнительное преимущество в том, что при тестировании веб-страницы во время разработки вы фактически запускаете мини-код, который вы в конечном итоге развертываете.

+0

Он не спрашивает, как создавать мини-файлы, но как включать мини-файлы после сборки без ручного редактирования. – Leo

+0

@Leo Вы действительно прочитали, что такое исходные карты? – reduckted

+0

Я знаю, действительно. Основная причина здесь - это то, что dev dev env не хорошо разработан. Он мог включить мини-версию и отладить с помощью sourcemap. Однако он этого не сделал. Я не знаю, почему, но, может быть, есть причина. Пока что я не знаю, есть ли у него попытки реорганизовать свой проект, тогда мой ответ - это исправление. – Leo

0

Вы можете попробовать глотка замена плагина написать задачу, что-то вроде этого:

var replace = require('gulp-replace') 
gulp.task('adoptDist', function() { 
    return gulp.src(paths.dest + '/www/**/*.html', { base: paths.dest }) 
     .pipe(replace(/src="js\/(.+?)\.js"/g, function(match, $1) { 
      return 'src="dist/' + $1 + '.min.js"' 
     })) 
     .pipe(gulp.dest(paths.dest)) 
});