Javascript 放入main.js的连接文件只是保持堆叠,而不是清除文件然后添加代码
我试图将所有脚本编译成一个Javascript 放入main.js的连接文件只是保持堆叠,而不是清除文件然后添加代码,javascript,gulp,gulp-concat,Javascript,Gulp,Gulp Concat,我试图将所有脚本编译成一个main.js文件,然后链接到我的索引文件。问题是,我所有的脚本文件都被连接在一起,然后才添加到main.js文件中,所以如果我保存3次,我基本上会将我所有脚本的3个副本连接到main.js文件中 我想在每次保存时删除main.js文件,然后运行连接,或者在添加内容之前清理文件。现在,如果我尝试使用del模块删除文件,我会收到一个错误,说明如果不强制执行此操作,我无法将文件从工作目录中删除。如果可能的话,我希望避免强迫这样做 我觉得必须有一种更优雅的方式来做这件事 以下
main.js
文件,然后链接到我的索引文件。问题是,我所有的脚本文件都被连接在一起,然后才添加到main.js
文件中,所以如果我保存3次,我基本上会将我所有脚本的3个副本连接到main.js
文件中
我想在每次保存时删除main.js
文件,然后运行连接,或者在添加内容之前清理文件。现在,如果我尝试使用del
模块删除文件,我会收到一个错误,说明如果不强制执行此操作,我无法将文件从工作目录中删除。如果可能的话,我希望避免强迫这样做
我觉得必须有一种更优雅的方式来做这件事
以下是我的脚本任务:
// Concat and compile our JS into a minified dist file
gulp.task('scripts', function() {
return gulp.src('../app/public/assets/scripts/**/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(concat('main.js'))
//.pipe(del(['../app/public/assets/scripts/main.js'])) <-- Doesn't work without forcing
.pipe(gulp.dest('../app/public/assets/scripts'))
.pipe(gulpif(flags.build, gulp.dest('../app/dist/assets/scripts')))
.pipe(rename({ suffix: '.min' }))
.pipe(uglify())
.pipe(gulpif(flags.build, gulp.dest('../app/dist/assets/scripts')))
.pipe(notify({ message: 'Finished compiling scripts' }));
});
//Concat并将我们的JS编译成一个缩小的dist文件
gulp.task('scripts',function()){
返回gulp.src(“../app/public/assets/scripts/***.js”)
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(concat('main.js'))
//.pipe(del(['../app/public/assets/scripts/main.js'])我通常会这样做(非常简单:):
这发生在监视任务上,而不是构建上,构建没有问题,但我需要在每个监视上进行concat,这样我就不必包含多个文件。我用监视任务编辑了答案。这很有帮助?抱歉,但我没有很好地理解问题:)问题是在新代码出现之前main.js文件没有被清空。因此,您在文件中得到了重复的代码。您的答案似乎没有解决这个问题。在每次更改(watc have['connect','build']deps)时,我的代码都是由一个构建执行的,而构建依赖于一个干净的…因此您在main.js中没有重复的代码
var PARAMS = {
destPath: 'build',
js: [
'src/js/test1.js',
'src/js/test2.js',
// ecc...
],
// other
};
var TARGETS = {
dest: 'main.js', // dest file
extra: [
// This files are inclued only in .bundle.min.js version
// extra file here
],
js: [
'src/js/test1.js',
'src/js/test2.js',
// ecc...
]
};
gulp.task('connect', function() {
return connect.server({
livereload: true,
host: '0.0.0.0',
port: 8000
});
});
gulp.task('reload', ['build'], function () {
return gulp.src(['sandbox/**/*.html'])
.pipe(connect.reload());
});
gulp.task('watch', ['connect', 'build'], function () {
var src = [];
// other
src = src.concat(PARAMS.js);
return gulp.watch(src, ['reload']);
});
gulp.task('clean', function (done) {
return del(['build'], done);
});
gulp.task('build', ['clean'], function () {
return gulp.src(target.js);
.pipe(concat(target.dest))
.pipe(gulp.dest(PARAMS.destPath)) // Plain
.pipe(uglify())
.pipe(rename({ extname: '.min.js' })) // Minified
.pipe(gulp.dest(PARAMS.destPath))
.pipe(addsrc(target.extra))
.pipe(order(target.extra))
.pipe(concat(target.dest))
.pipe(rename({ extname: '.bundled.min.js' })) // Bundled
.pipe(gulp.dest(PARAMS.destPath));
});
gulp.task('default', ['build']);