源图不适用于离子2

时间:2016-06-13 08:36:00

标签: typescript ionic2 source-maps

我将TypeScriptIonic 2一起使用,但我的源图无效。我想我的TypeScript gulp任务有问题,但我找不到问题。

这是我的 gulpfile.js

var gulp = require("gulp"),
    gulpWatch = require("gulp-watch"),
    del = require("del"),
    runSequence = require("run-sequence"),
    typescript = require("gulp-typescript"),
    argv = process.argv;


/**
 * Ionic hooks
 * Add ':before' or ':after' to any Ionic project command name to run the specified
 * tasks before or after the command.
 */
gulp.task("serve:before", ["watch"]);
gulp.task("emulate:before", ["build"]);
gulp.task("deploy:before", ["build"]);
gulp.task("build:before", ["build"]);

// we want to 'watch' when livereloading
var shouldWatch = argv.indexOf("-l") > -1 || argv.indexOf("--livereload") > -1;
gulp.task("run:before", [shouldWatch ? "watch" : "build"]);

/**
 * Ionic Gulp tasks, for more information on each see
 * https://github.com/driftyco/ionic-gulp-tasks
 *
 * Using these will allow you to stay up to date if the default Ionic 2 build
 * changes, but you are of course welcome (and encouraged) to customize your
 * build however you see fit.
 */
var buildBrowserify = require("ionic-gulp-browserify-es2015");
var buildSass = require("ionic-gulp-sass-build");
var copyHTML = require("ionic-gulp-html-copy");
var copyFonts = require("ionic-gulp-fonts-copy");
var copyScripts = require("ionic-gulp-scripts-copy");

var isRelease = argv.indexOf("--release") > -1;

gulp.task("watch", ["clean"], function (done) {
    runSequence(
      ["sass", "html", "fonts", "typescript", "scripts"],
      function () {
          gulpWatch("app/**/*.scss", function () { gulp.start("sass"); });
          gulpWatch("app/**/*.html", function () { gulp.start("html"); });
          buildBrowserify({ watch: true }).on("end", done);
      }
    );
});

gulp.task("typescript", function () {
    var tsProject = typescript.createProject("tsconfig.json");
    var tsResult = tsProject
        .src()
        .pipe(typescript(tsProject));

    return tsResult.js.pipe(gulp.dest(function (f) {
        return f.base;
    }));
});

gulp.task("build", ["clean"], function (done) {
    runSequence(
      ["sass", "html", "fonts", "typescript", "scripts"],
      function () {
          buildBrowserify({
              minify: isRelease,
              browserifyOptions: {
                  debug: !isRelease
              },
              uglifyOptions: {
                  mangle: false
              }
          }).on("end", done);
      }
    );
});

gulp.task("sass", buildSass);
gulp.task("html", copyHTML);
gulp.task("fonts", copyFonts);
gulp.task("scripts", copyScripts);
gulp.task("clean", function () {
    return del("www/build");
});

这是我的 tsconfig

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": true
  }
  "exclude": [
    "node_modules"
  ]
}

1 个答案:

答案 0 :(得分:0)

所以,我找到了解决方案,这里是ionic.config.json的样子

{
  "name": "project-name",
  "app_id": "",
  "v2": true,
  "typescript": true,
  "defaultBrowser": "chrome"
}

以下是tsconfig的外观:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true
  },
  "filesGlob": [
    "**/*.ts",
    "!node_modules/**/*"
  ],
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ],
  "compileOnSave": false,
  "atom": {
    "rewriteTsconfig": false
  }
}

这是gulp文件的样子:

var gulp = require('gulp'),
    gulpWatch = require('gulp-watch'),
    del = require('del'),
    runSequence = require('run-sequence'),
    argv = process.argv;


/**
 * Ionic hooks
 * Add ':before' or ':after' to any Ionic project command name to run the specified
 * tasks before or after the command.
 */
gulp.task('serve:before', ['watch']);
gulp.task('emulate:before', ['build']);
gulp.task('deploy:before', ['build']);
gulp.task('build:before', ['build']);

// we want to 'watch' when livereloading
var shouldWatch = argv.indexOf('-l') > -1 || argv.indexOf('--livereload') > -1;
gulp.task('run:before', [shouldWatch ? 'watch' : 'build']);

/**
 * Ionic Gulp tasks, for more information on each see
 * https://github.com/driftyco/ionic-gulp-tasks
 *
 * Using these will allow you to stay up to date if the default Ionic 2 build
 * changes, but you are of course welcome (and encouraged) to customize your
 * build however you see fit.
 */
var buildBrowserify = require('ionic-gulp-browserify-typescript');
var buildSass = require('ionic-gulp-sass-build');
var copyHTML = require('ionic-gulp-html-copy');
var copyFonts = require('ionic-gulp-fonts-copy');
var copyScripts = require('ionic-gulp-scripts-copy');

var isRelease = argv.indexOf('--release') > -1;

gulp.task('watch', ['clean'], function(done){
  runSequence(
    ['sass', 'html', 'fonts', 'scripts'],
    function(){
      gulpWatch('app/**/*.scss', function(){ gulp.start('sass'); });
      gulpWatch('app/**/*.html', function(){ gulp.start('html'); });
      buildBrowserify({ watch: true }).on('end', done);
    }
  );
});

gulp.task('build', ['clean'], function(done){
  runSequence(
    ['sass', 'html', 'fonts', 'scripts'],
    function(){
      buildBrowserify({
        minify: isRelease,
        browserifyOptions: {
          debug: !isRelease
        },
        uglifyOptions: {
          mangle: false
        }
      }).on('end', done);
    }
  );
});

gulp.task('sass', buildSass);
gulp.task('html', copyHTML);
gulp.task('fonts', copyFonts);
gulp.task('scripts', copyScripts);
gulp.task('clean', function(){
  return del('www/build');
});

以下是如何使用typescript设置ionic2项目:

  

ionic start project-name blank --v2 --ts