2016-12-04 8 views
-1

У меня есть небольшое приложение Angular 2.0. Он отлично работает на моих машинах ;-) Он использует SystemJS, и у меня есть сборка gulp для него. Проблема заключается в том, когда я разворачиваю его в подкаталог, он ищет корневой каталог для узлов-модулей. Он должен смотреть:Путь проблемы с угловым 2, SystemJS, node_modules

example.com/myapp/node_modules 

но смотрит на

example.com/node_modules 

вместо этого.

tsconfig.json

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "moduleResolution": "node",? 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": true, 
    "suppressImplicitAnyIndexErrors": true 
    } 
} 

systemjs.config.js

(function (global) { 
    System.config({ 
    paths: { 
     // paths serve as alias 
     'npm:': 'node_modules/' 
    }, 
    // map tells the System loader where to look for things 
    map: { 
     // our app is within the app folder 
     app: 'app', 

     // angular bundles 
     '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 
     '@angular/common': 'npm:@angular/common/bundles/common.umd.js', 
     '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', 
     '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', 
     '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 
     '@angular/http': 'npm:@angular/http/bundles/http.umd.js', 
     '@angular/router': 'npm:@angular/router/bundles/router.umd.js', 
     '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 

     // other libraries 
     'rxjs': 'npm:rxjs' 
    }, 
    // packages tells the System loader how to load when no filename and/or  no extension 
    packages: { 
     app: { 
     main: './main.js', 
     defaultExtension: 'js' 
     }, 
     rxjs: { 
     defaultExtension: 'js' 
     } 
    } 
    }); 
})(this); 

gulpfile.js

const gulp = require('gulp'); 
const del = require('del'); 
const typescript = require('gulp-typescript'); 
const tscConfig = require('./tsconfig.json'); 
const sourcemaps = require('gulp-sourcemaps'); 

// clean the contents of the distribution directory 
gulp.task('clean', function() { 
    return del('dist/**/*'); 
}); 

// TypeScript compile 
gulp.task('compile', ['clean', 'copy:libs', 'copy:assets'], function() { 
    return gulp 
     .src('app/**/*.ts') 
     .pipe(sourcemaps.init()) 
     .pipe(typescript(tscConfig.compilerOptions)) 
     .pipe(sourcemaps.write('.')) 
     .pipe(gulp.dest('dist/app')); 
}); 

// copy dependencies 
gulp.task('copy:libs', ['clean'], function() { 
    return gulp.src([ 
     'node_modules/angular2/bundles/angular2-polyfills.js', 
     'node_modules/systemjs/dist/system.src.js', 
     'node_modules/rxjs/bundles/Rx.js', 
     'node_modules/angular2/bundles/angular2.dev.js', 
     'node_modules/angular2/bundles/router.dev.js', 
     'node_modules/**/*.js', 
     'node_modules/**/*.css' 
    ]) 
     .pipe(gulp.dest('dist/node_modules')) 
}); 

// copy static assets - i.e. non TypeScript compiled source 
gulp.task('copy:assets', ['clean'], function() { 
    return gulp.src(['app/**/*', 'index.html', 'systemjs.config.js',   '!app/**/*.ts'], { base : './' }) 
     .pipe(gulp.dest('dist')) 
}); 

gulp.task('build', ['compile']); 
gulp.task('default', ['build']); 

ответ

0

Вы должны о.е. t sourceRoot="myapp/" - tsconfig.json. Эта опция

Указывает место, где отладчик должен найти файлы TypeScript вместо источников. Используйте этот флаг, если источники будут , расположенные во время выполнения в другом месте, чем во время разработки. Указанное местоположение будет встроено в sourceMap для направления отладчика , где будут расположены исходные файлы.