我正在努力使gulp编译并观看TypeScript文件.这是我到目前为止所得到的
var tsProject = plugins.typescript.createProject(
{
removeComments: false,
target: 'ES5',
module: 'amd',
noExternalResolve: false,
noImplicitAny: false,
});
var typescriptGlob = [
presentationScriptsDir + '**/*.ts',
definitelyTypedDefinitions
];
gulp.task("compile-typescript", function () {
return gulp.src(typescriptGlob)
.pipe(plugins.typescript(tsProject))
.pipe(gulp.dest(presentationScriptsDir));
});
gulp.task("watch-typescript", function() {
return gulp.watch(typescriptGlob, ["compile-typescript"]);
});
Run Code Online (Sandbox Code Playgroud)
我正在使用gulp-typescript.
但是,由于我们有数百个TypeScript文件,所以每次其中一个文件发生更改时我都不想重新编译它们.上面的代码就是这样(我可以告诉因为watch-typescript至少需要花费的时间compile-typescript)
我尝试过使用gulp-changed,就像这样
gulp.task("compile-typescript", function () {
return gulp.src(typescriptGlob)
.pipe(plugins.changed(presentationScriptsDir, {extension: '.js'}))
.pipe(plugins.typescript(tsProject))
.pipe(gulp.dest(presentationScriptsDir));
});
Run Code Online (Sandbox Code Playgroud)
这确实过滤掉了未更改的文件.然后,打字稿编译器会报告错误,因为它只获取单个文件,该文件缺少通常从其他文件获取的类型声明.
我不想将noExternalResolve标志设置为true,因为那时很多类型检查都不会完成,这首先打败了使用TypeScript的很多原因.
我怎样才能更好地编写这个gulpfile?
我无法理解这一点.这应该是每次修改监视文件时执行的gulp任务.任何人都可以解释为什么需要通过changed插件管道监视文件?
gulp.task('build-css', function () {
return gulp.src(paths.css)
.pipe(changed(paths.output, {extension: '.css'}))
.pipe(gulp.dest(paths.output));
});
gulp.task('watch', ['serve'], function() {
gulp.watch(paths.css, ['build-css']);
});
Run Code Online (Sandbox Code Playgroud)
免责声明:这不是我的代码.只是想了解发生了什么,以便创建我自己的自定义监视任务.
我之前使用gulp改变了我的JS没有问题.但是现在我正在尝试使用gulp-changed和gulp-newer我的scss文件,而不检测哪个文件已更改.
var changed = require('gulp-changed');
var newer = require('gulp-newer');
var SRC = './stylesheets/**/*.scss';
var DEST = './stylesheets';
gulp.task('sass', function () {
return gulp.src(SRC)
.pipe(changed(DEST)) //tried newer here as well
.pipe(sass())
.pipe(gulp.dest(DEST))
});
Run Code Online (Sandbox Code Playgroud)
更改scss文件时,它将输出已更改但不更改任何文件 scss
[BS] Watching files...
[09:26:13] Starting 'sass'...
[09:26:14] Finished 'sass' after 180 ms
Run Code Online (Sandbox Code Playgroud)
看
gulp.task('watch', ['setWatch', 'browserSync'], function () {
gulp.watch('./stylesheets/**/*.scss', ['sass']);
});
Run Code Online (Sandbox Code Playgroud)
预期的输出文件存在,并且自昨天以来一直没有改变.
如何让scss只编译已更改的文件.
gulp ×3
gulp-changed ×3
javascript ×2
gulp-newer ×1
gulp-watch ×1
node.js ×1
sass ×1
typescript ×1
watch ×1