2016-02-09 4 views
0

Я пытаюсь иметь 3 папки (ts, js, map) ... 1 для TS, 1 для скомпилированных js и 1 для файлов карт. Разве это невозможно? Я видел пару вопросов здесь, но не нашел ответа. Я использую Webstorm, Npm и работаю через Angular2 example. У меня есть файл ts в одной папке и все выходные данные в другом, но не могут заставить карту войти в нее самостоятельно. Худший случай, по крайней мере, я могу получить, чтобы карты были одним файлом. Я пробовал inlineSourceMap, inlineSources, sourceRoot и mapRoot = все не удалось.TypeScript tsconfig Выходные файлы в определенных папках

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": "" 
} 

ответ

2

Вы на правильном пути. Используйте "outDir" в tsconfig.json, чтобы указать, куда вы хотите, чтобы transpiled.js отправился, затем используйте задачу, такую ​​как gulp, grunt или custom - для копирования файлов map.js в нужное место.

sourceRoot и sourceMap не занимаются тем, что вы думаете. Они просто позволяют указать путь в 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')) 
}) 

Нечто подобное должно работать.