비슷한 질문이 있습니다. here 이것은 내 역할에 대한 좀 더 많은 연구와 이것이 작동 할 수있는 새로운 방법으로 병합되었습니다.소스 마스크가있는 꿀꺽 꿀꺽 소리 필터
기본적으로 나는 내 .js
및 .coffee
개의 파일을 하나의 gulp.src()
개체 내에 포함하고 확장명에 따라 관련 작업을 수행하려고합니다.
gulp-if으로 시작한 무엇이 gulp-filter을 사용하여 나를 솔직히 선호하는 것으로 바뀌 었습니다. 지금 당장 실행중인 catch는 gulp-sourcemaps과 함께 작동하도록 설정하는 것입니다. 현재 작업은 다른 작업을 무시하는 것처럼 보입니다.하지만 궁극적으로 모든 파일을 하나의 파일에 연결하고, 다른 파일에 소스 매핑하고, 각 파일 확장명에 각각의 작업을 실행시키는 것이 좋습니다. uglify 태스크가 주석 처리 된 것을 볼 수 있습니다. 그게 내게 소리 지르는거야. 떨어져 나가는 전체 무리없이. 필터가 작동하고 CoffeeScript 오류가 발생하면 coffeescriptlint()
이 작업을 수행하지만 내 감시 명령이 실행됩니다. 아직 달리면서도 아무런 반응이 없습니다.
내가 gulp-extract-sourcemap 같은 것을 사용하여 각 소스 맵을 추출하는 경로를 따라가는 것 같지만, 이것이 올바른 방향인지 확실하지 않습니다.
일반적으로 나는 JS와 Coffeescript 작업을 분리 할 것이지만, 나는 두 가지 사이에 많은 것들이 섞여있어 간단한 필터와 함께 가져 오는 것이 논리적 인 것처럼 보였다. 특히 나는 둘 모두를위한 소스 맵.
나는이 느낌이 아주 가깝기 때문에, 올바른 방향으로의 모든 전환이 크게 감사 할 것입니다. 현재 gulpfile.js와 package.json이 포함되어 있습니다. 감사!
Gulpfile.js
// Load plugins
var gulp = require('gulp'),
jshint = require('gulp-jshint'),
coffee = require('gulp-coffee'),
changed = require('gulp-changed'),
coffeelint = require('gulp-coffeelint'),
uglify = require('gulp-uglify'),
sourcemaps = require('gulp-sourcemaps'),
notify = require('gulp-notify'),
concat = require('gulp-concat'),
filesize = require('gulp-size'),
livereload = require('gulp-livereload'),
duration = require('gulp-duration'),
gutil = require('gulp-util'),
gFilter = require('gulp-filter');
gulp.task('scripts', function() {
var jsBuildDir = 'assets/js/build/',
jsFilter = gFilter('**/*.js'),
coffeeFilter = gFilter('**/*.coffee');
return gulp.src([
'assets/js/src/_init.coffee',
'assets/js/src/_init.js'
])
.pipe(coffeeFilter)
.pipe(coffeelint().on('error', gutil.log))
.pipe(coffeelint.reporter())
.pipe(sourcemaps.init())
.pipe(coffee({bare: true}).on('error', gutil.log))
.pipe(sourcemaps.write('../../maps'))
.pipe(coffeeFilter.restore())
.pipe(jsFilter)
.pipe(jshint({
'boss': true,
'sub': true,
'evil': true,
'browser': true,
'globals': {
'module': false,
'require': true
}
}),
jshint.reporter('jshint-stylish'))
.pipe(jsFilter.restore())
.pipe(concat('scripts.min.js'))
//.pipe(uglify())
.pipe(filesize({
title: 'Scripts:'
}))
.pipe(gulp.dest(jsBuildDir))
.pipe(duration('building script files'))
.pipe(notify({ message: 'Coffeescript task complete' }));
});
// Default task
gulp.task('default', ['scripts']);
// Watch
gulp.task('watch', function() {
gulp.watch(['assets/js/src/**/*.js', 'assets/js/src/**/*.coffee'], ['scripts']);
// Create LiveReload server
var server = livereload();
// Watch files in patterns below, reload on change
gulp.watch(['assets/js/build/*']).on('change', function(file) {
server.changed(file.path);
});
});
Package.json
{
"devDependencies": {
"gulp": "^3.8.8",
"gulp-changed": "^1.0.0",
"gulp-coffee": "^2.2.0",
"gulp-coffeelint": "^0.4.0",
"gulp-concat": "^2.4.0",
"gulp-duration": "0.0.0",
"gulp-filter": "^1.0.2",
"gulp-jshint": "^1.8.4",
"gulp-livereload": "^2.1.1",
"gulp-notify": "^1.6.0",
"gulp-size": "^1.1.0",
"gulp-sourcemaps": "^1.2.2",
"gulp-uglify": "^1.0.1",
"gulp-util": "^3.0.1",
"jshint-stylish": "^0.4.0"
}
}
, 당신은 편지 yaml 파일 대신 도움이 되길 바랍니다. https://github.com/Stnaire/gulp-yaml-packages. npm : https://www.npmjs.com/package/gulp-yaml-packages. – Stnaire