Gulp 一次性注射需要非常长的时间
我有一个问题,我无法找出原因和解决方法,那就是吞咽注射需要很长时间,没有任何理由,没有任何警告或错误,只是需要很长时间才能完成,然后成功完成(您可以看到完成任务大约需要70分钟,有时需要80-120分钟): 我提供了代码,希望找到解决此问题的方法或想法: 注入任务:Gulp 一次性注射需要非常长的时间,gulp,gulp-inject,Gulp,Gulp Inject,我有一个问题,我无法找出原因和解决方法,那就是吞咽注射需要很长时间,没有任何理由,没有任何警告或错误,只是需要很长时间才能完成,然后成功完成(您可以看到完成任务大约需要70分钟,有时需要80-120分钟): 我提供了代码,希望找到解决此问题的方法或想法: 注入任务: var path = require('path'); var gulp = require('gulp'); var conf = require('./conf'); var $ = require('gulp-load-pl
var path = require('path');
var gulp = require('gulp');
var conf = require('./conf');
var $ = require('gulp-load-plugins')();
var wiredep = require('wiredep').stream;
var _ = require('lodash');
var browserSync = require('browser-sync');
gulp.task('inject-reload', ['inject'], function ()
{
browserSync.reload();
});
gulp.task('inject', ['scripts', 'styles'], function ()
{
var injectStyles = gulp.src([
path.join(conf.paths.tmp, '/serve/app/**/*.css'),
path.join('!' + conf.paths.tmp, '/serve/app/vendor.css')
], {read: false});
var injectScripts = gulp.src([
path.join(conf.paths.src, '/app/**/*.module.js'),
path.join(conf.paths.src, '/app/**/*.js'),
path.join('!' + conf.paths.src, '/app/**/*.spec.js'),
path.join('!' + conf.paths.src, '/app/**/*.mock.js'),
])
.pipe($.angularFilesort()).on('error', conf.errorHandler('AngularFilesort'));
var injectOptions = {
ignorePath : [conf.paths.src, path.join(conf.paths.tmp, '/serve')],
addRootSlash: false
};
return gulp.src(path.join(conf.paths.src, '/*.html'))
.pipe($.inject(injectStyles, injectOptions))
.pipe($.inject(injectScripts, injectOptions))
.pipe(wiredep(_.extend({}, conf.wiredep)))
.pipe(gulp.dest(path.join(conf.paths.tmp, '/serve')));
});
Conf文件(如果需要):
var gutil = require('gulp-util');
/**
* The main paths of your project handle these with care
*/
exports.paths = {
src : 'src',
dist: 'dist',
tmp : '.tmp',
e2e : 'e2e'
};
/**
* Wiredep is the lib which inject bower dependencies in your project
* Mainly used to inject script tags in the index.html but also used
* to inject css preprocessor deps and js files in karma
*/
exports.wiredep = {
directory: 'bower_components'
};
/**
* Common implementation for an error handler of a Gulp plugin
*/
exports.errorHandler = function (title)
{
'use strict';
return function (err)
{
gutil.log(gutil.colors.red('[' + title + ']'), err.toString());
this.emit('end');
};
};
第一:我在这里学会了倾听,在没有升级到最新版本的情况下,永远不要使用gulp和npm模块 我发现问题与过时和不推荐使用的gulp插件有关,而不是gulp注入本身:
- gulp useref从1.3到3.0严重过时(更新和迁移)
- gulp minify css已弃用,替换为gulp cssnano
- gulp minify html已弃用,替换为gulp htmlmin
gulp.task('html', ['inject', 'partials'], function ()
{
var partialsInjectFile = gulp.src(path.join(conf.paths.tmp, '/partials/templateCacheHtml.js'), {read: false});
var partialsInjectOptions = {
starttag : '<!-- inject:partials -->',
ignorePath : path.join(conf.paths.tmp, '/partials'),
addRootSlash: false
};
var htmlFilter = $.filter('*.html', {restore: true});
var jsFilter = $.filter('**/*.js', {restore: true});
var cssFilter = $.filter('**/*.css', {restore: true});
return gulp.src(path.join(conf.paths.tmp, '/serve/*.html'))
.pipe($.inject(partialsInjectFile, partialsInjectOptions))
.pipe(jsFilter)
.pipe($.sourcemaps.init())
.pipe($.ngAnnotate())
.pipe($.uglify({preserveComments: $.uglifySaveLicense})).on('error', conf.errorHandler('Uglify'))
.pipe($.sourcemaps.write('maps'))
.pipe(jsFilter.restore)
.pipe(cssFilter)
.pipe($.sourcemaps.init())
.pipe($.cssnano())
.pipe($.sourcemaps.write('maps'))
.pipe(cssFilter.restore)
.pipe($.useref())
.pipe(htmlFilter)
.pipe($.htmlmin({
removeComments : true,
collapseWhitespace : true,
removeAttributeQuotes: true
}))
.pipe(htmlFilter.restore)
.pipe(gulp.dest(path.join(conf.paths.dist, '/')))
.pipe($.size({
title : path.join(conf.paths.dist, '/'),
showFiles: true
}));
});
gulp.task('html',['inject','partials',],function()
{
var partialsInjectFile=gulp.src(path.join(conf.path.tmp,'/partials/templateCacheHtml.js'),{read:false});
var partialsInjectOptions={
开始标记:“”,
ignorePath:path.join(conf.path.tmp,“/partials”),
addRootSlash:false
};
var htmlFilter=$.filter('*.html',{restore:true});
var jsFilter=$.filter('***.js',{restore:true});
var cssFilter=$.filter('***.css',{restore:true});
返回gulp.src(path.join(conf.paths.tmp,'/service/*.html'))
.pipe($.inject(partialsInjectFile,partialsInjectOptions))
.pipe(jsFilter)
.pipe($.sourcemaps.init())
.pipe($.ngAnnotate())
.pipe($.uglify({preserveComents:$.uglifySaveLicense})).on('error',conf.errorHandler('uglify'))
.pipe($.sourcemaps.write('maps'))
.pipe(jsFilter.restore)
.管道(cssFilter)
.pipe($.sourcemaps.init())
.pipe($.cssnano())
.pipe($.sourcemaps.write('maps'))
.pipe(cssFilter.restore)
.pipe($.useref())
.管道(htmlFilter)
.pipe($.htmlmin({
removeComments:对,
拼贴空白:对,
RemoveAttribute属性:true
}))
.pipe(htmlFilter.restore)
.pipe(gulp.dest(path.join(conf.paths.dist,“/”))
.管道(美元/尺寸)({
标题:path.join(conf.path.dist,“/”),
showFiles:true
}));
});
首先:我在这里学到了一个技巧,在没有升级到最新版本的情况下,永远不要使用gulp和npm模块
我发现问题与过时和不推荐使用的gulp插件有关,而不是gulp注入本身:
- gulp useref从1.3到3.0严重过时(更新和迁移)
- gulp minify css已弃用,替换为gulp cssnano
- gulp minify html已弃用,替换为gulp htmlmin
gulp.task('html', ['inject', 'partials'], function ()
{
var partialsInjectFile = gulp.src(path.join(conf.paths.tmp, '/partials/templateCacheHtml.js'), {read: false});
var partialsInjectOptions = {
starttag : '<!-- inject:partials -->',
ignorePath : path.join(conf.paths.tmp, '/partials'),
addRootSlash: false
};
var htmlFilter = $.filter('*.html', {restore: true});
var jsFilter = $.filter('**/*.js', {restore: true});
var cssFilter = $.filter('**/*.css', {restore: true});
return gulp.src(path.join(conf.paths.tmp, '/serve/*.html'))
.pipe($.inject(partialsInjectFile, partialsInjectOptions))
.pipe(jsFilter)
.pipe($.sourcemaps.init())
.pipe($.ngAnnotate())
.pipe($.uglify({preserveComments: $.uglifySaveLicense})).on('error', conf.errorHandler('Uglify'))
.pipe($.sourcemaps.write('maps'))
.pipe(jsFilter.restore)
.pipe(cssFilter)
.pipe($.sourcemaps.init())
.pipe($.cssnano())
.pipe($.sourcemaps.write('maps'))
.pipe(cssFilter.restore)
.pipe($.useref())
.pipe(htmlFilter)
.pipe($.htmlmin({
removeComments : true,
collapseWhitespace : true,
removeAttributeQuotes: true
}))
.pipe(htmlFilter.restore)
.pipe(gulp.dest(path.join(conf.paths.dist, '/')))
.pipe($.size({
title : path.join(conf.paths.dist, '/'),
showFiles: true
}));
});
gulp.task('html',['inject','partials',],function()
{
var partialsInjectFile=gulp.src(path.join(conf.path.tmp,'/partials/templateCacheHtml.js'),{read:false});
var partialsInjectOptions={
开始标记:“”,
ignorePath:path.join(conf.path.tmp,“/partials”),
addRootSlash:false
};
var htmlFilter=$.filter('*.html',{restore:true});
var jsFilter=$.filter('***.js',{restore:true});
var cssFilter=$.filter('***.css',{restore:true});
返回gulp.src(path.join(conf.paths.tmp,'/service/*.html'))
.pipe($.inject(partialsInjectFile,partialsInjectOptions))
.pipe(jsFilter)
.pipe($.sourcemaps.init())
.pipe($.ngAnnotate())
.pipe($.uglify({preserveComents:$.uglifySaveLicense})).on('error',conf.errorHandler('uglify'))
.pipe($.sourcemaps.write('maps'))
.pipe(jsFilter.restore)
.管道(cssFilter)
.pipe($.sourcemaps.init())
.pipe($.cssnano())
.pipe($.sourcemaps.write('maps'))
.pipe(cssFilter.restore)
.pipe($.useref())
.管道(htmlFilter)
.pipe($.htmlmin({
removeComments:对,
拼贴空白:对,
RemoveAttribute属性:true
}))
.pipe(htmlFilter.restore)
.pipe(gulp.dest(path.join(conf.paths.dist,“/”))
.管道(美元/尺寸)({
标题:path.join(conf.path.dist,“/”),
showFiles:true
}));
});
认真地说。这就是答案。我的构建时间从7.3分钟变为6秒。认真地说。这就是答案。我的构建时间从7.3分钟变为6秒。