在我的宠物项目中,我使用 gulp 来构建 .less 和 .ts 文件。它是这样工作的:
gulp.task('processTypeScript', function () {
gulp.src('Content/TypeScript/**/*.ts')
.pipe(sourcemaps.init())
.pipe(ts(tsOptions)).js
.pipe(sourcemaps.write())
.pipe(gulp.dest('./wwwroot/content/script'));
});
gulp.task('build', ['copyLibs', 'processTypeScript', 'processLess']);
第一个任务通过添加源映射构建 typescript 文件并将结果复制到wwwroot 文件夹,第二个任务是完全构建所有客户端代码 - 我不描述所有这些任务,它们是相同的。
为了方便开发,我使用watch 机制,所以很简单:
gulp.task('watch', ['processTypeScript', 'processLess'], function () {
gulp.watch('Content/TypeScript/**/*.ts', ['processTypeScript']);
gulp.watch('Content/Less/**/*.less', ['processLess']);
});
现在打字稿文件将根据其中的任何更改重新编译。
为了向 html 添加文件,我使用这种方法
<environment names="Development">
<script asp-src-include="~/content/script/**/*.js" asp-append-version="true"></script>
<link rel="stylesheet" asp-href-include="~/content/style/**/*.css" asp-append-version="true" />
</environment>
注意asp-append-version — 这会阻止浏览器中的缓存。
最后,您可以通过 gulp 构建最小化的 uglified 脚本和样式文件以进行生产配置,并将其包含在页面上的 <environment names="Production"> 标记中。
所以,这对我来说很舒服。我在项目打开时添加了build 和watch 任务,不关心编译脚本和样式。