为了这个我已经在网上爬遍了。
我考虑过使用--out,但是有一篇很大的文章https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md说明为什么这是个坏主意。
它说
--out is really the job of some build tool.
但是,并没有比这更进一步。 所以,到目前为止,我有以下过程:
- 检查 typescript
- 编译 typescript
- 构建源 map
- 将编译后的 typescript 通过管道传输到另一个目录(构建)
- 将所有 bower dep 添加到 index.html 文件
- 服务 index.html,它指向 appEntryPoint.js,即 只是一个 JS 文件,它调用了其余部分中的一些东西 项目。
转译文件的第一行是: appEntryPoint.js:
define(["require", "exports", "./example"], function (require, exports, example_1) {
我得到:“ Uncaught ReferenceError ,未定义定义”。我尝试添加 require-js 以便它在该文件之前加载,但这也没有用。
所以。我有哪些选择?
- 我可以强制 typescript 只要求使用 require 并包含其他文件中需要的任何内容吗?
- 我可以将我所有的 typescript 缩小到一个 JS 文件中,然后仍然可以使用 sourcemaps 吗?如果是这样,怎么办??
作为引用,这是我的 gulpfile.js
:
var gulp = require('gulp');
var tsc = require('gulp-typescript');
var tslint = require('gulp-tslint');
var config = require('./gulpfile.config')();
var sourcemaps = require('gulp-sourcemaps');
var browsersync = require('browser-sync');
var superstatic = require('superstatic');
var usemin = require("gulp-usemin");
var uglify = require("gulp-uglify");
var reload = browsersync.reload;
var wiredep = require("wiredep").stream;
gulp.task('ts-lint', function(){
return gulp.src(config.allTs)
.pipe(tslint())
.pipe(tslint.report('prose', {
emitError : false
}));
});
gulp.task('compile-ts', function(){
var sourceTsFiles = [
config.allTs,
config.typings
];
var tsResult = gulp
.src(sourceTsFiles)
.pipe(sourcemaps.init())
.pipe(tsc({
module: "amd",
target: "ES5",
declarationFiles: false,
emitError: false,
emitDecoratorMetadata: true,
outDir : config.tsOutputPath
}));
return tsResult.js
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(config.tsOutputPath))
.pipe(reload({stream:true}));
});
gulp.task('serve', ['ts-lint', 'compile-ts', 'bower'], function() {
gulp.watch([config.allTs], ['ts-lint', 'compile-ts']);
browsersync({
port: 3000,
files: ['index.html', '**/*.js'],
injectChanges: true,
logFileChanges: false,
logLevel: 'silent',
notify: true,
reloadDelay: 0,
server: {
baseDir: config.browsersyncpath,
middleware: superstatic({ debug: false})
}
});
});
gulp.task("bower", function () {
gulp.src("index.html")
.pipe(wiredep())
.pipe(gulp.dest("build"));
});
// gulp.task("minify", function () {
// return gulp.src("build/index.html")
// .pipe(usemin({
// assetsDir: config.tsOutputPath,
// js: [uglify(), "concat"]
// }))
// .pipe(gulp.dest(config.tsOutputPath));
// });
gulp.task('default', ['serve']);
最佳答案
只需使用 gulp-concat
将所有 *.js
文件合并为一个。
关于javascript - 将 typescript 缩小为一个 JS 文件,使用 gulp 保持 sourcemaps 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35657046/