TypeScript tsconfig输出某些文件夹中的文件

时间:2016-02-09 16:50:16

标签: javascript json typescript angular webstorm

我正在尝试为3个文件夹(ts,js,map)... 1表示TS,1表示已编译的js,1表示地图文件。这不可能吗?我在这里看到了几个问题,但没有找到答案。我正在使用Webstorm,Npm并运行Angular2 example。我有一个文件夹中的ts文件和另一个文件夹中的所有输出,但无法让地图进入它自己的。最糟糕的情况是高级至少可以让地图成为一个文件。我已尝试inlineSourceMapinlineSourcessourceRootmapRoot =全部失败。

tsconfig.json(link to schema):

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors":true,
    "sourceMap": true,
    ------ Tried a combination of...
    "inlineSourceMap": true,
    "inlineSources": true,
    "mapRoot": "app/map",
    "sourceRoot": "app/map",
    ------
    "outDir": "app/js"
  },
  "exclude": [
    "node_modules",
    "bower_components"
  ]

的package.json

{
  "name": "angular2-quickstart",
  "version": "1.0.0",
  "scripts": {
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "lite": "lite-server",
    "start": "concurrent \"npm run tsc:w\" \"npm run lite\" "
  },
  "license": "ISC",
  "dependencies": {
    "angular2": "2.0.0-beta.2",
    "systemjs": "0.19.6",
    "es6-promise": "^3.0.2",
    "es6-shim": "^0.33.3",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.0",
    "zone.js": "0.5.10"
  },
  "devDependencies": {
    "concurrently": "^1.0.0",
    "lite-server": "^1.3.4",
    "typescript": "^1.7.5"
  },
  "main": "",
  "author": "",
  "description": ""
}

1 个答案:

答案 0 :(得分:3)

你走在正确的轨道上。使用tsconfig.json中的"outDir"设置您希望transpiled.js去的位置,然后使用gulp,grunt或custom等任务将map.js文件复制到理想的位置。

sourceRootsourceMap不按照您的想法行事。它们只允许您在sourceMap中指定一个路径,您的浏览器应该在该路径中找到地图和源ts。它们不会改变输出的位置。

示例gulpfile.js

var gulp = require('gulp');
var del = require('del');

gulp.task('move' => () {
    gulp.src(['app/js/**/*.map.js'])
        .pipe(del())
        .pile(dest('app/map'))
})

这样的事情应该有用。