javascript - 将 typescript 缩小为一个 JS 文件,使用 gulp 保持 sourcemaps 工作

标签 javascript node.js typescript gulp

为了这个我已经在网上爬遍了。

我考虑过使用--out,但是有一篇很大的文章https://github.com/TypeStrong/atom-typescript/blob/master/docs/out.md说明为什么这是个坏主意。

它说

--out is really the job of some build tool.

但是,并没有比这更进一步。 所以,到目前为止,我有以下过程:

  1. 检查 typescript
  2. 编译 typescript
  3. 构建源 map
  4. 将编译后的 typescript 通过管道传输到另一个目录(构建)
  5. 将所有 bower dep 添加到 index.html 文件
  6. 服务 index.html,它指向 appEntryPoint.js,即 只是一个 JS 文件,它调用了其余部分中的一些东西 项目。

转译文件的第一行是: appEntryPoint.js:

define(["require", "exports", "./example"], function (require, exports, example_1) {

我得到:“ Uncaught ReferenceError ,未定义定义”。我尝试添加 require-js 以便它在该文件之前加载,但这也没有用。

所以。我有哪些选择?

  1. 我可以强制 typescript 只要求使用 require 并包含其他文件中需要的任何内容吗?
  2. 我可以将我所有的 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/

相关文章:

javascript - ng-model 未定义,多种方式无法从文本框中获取文本

javascript - JavaScript中的数据竞赛?

javascript - javascript中的树遍历

javascript - 如何在 Typescript 中分隔数组

typescript - 在 Visual Studio Code 中创建没有语言服务器的诊断条目

typescript - 类型定义中右大括号后面的 [keyof T] 是什么意思?

javascript - 如何使用 jquery 计算样式为 "nowrap"的文本宽度?

javascript - 如何更改默认文件 dropify?

javascript - html中的多级选择

node.js - 带有 IcedCoffeeScript 的 Nodemon