Ich versuche zu schlucken, um alle meine Lieferantenabhängigkeiten in eine große vendor.js Datei zu packen.
Bis jetzt habe ich gulp-concat verwendet, um es in eine Datei zu machen, aber es lädt die system.js enthaltenen Dateien nicht richtig.
Wenn ich versuche, die eckige App zu starten, geht systemjs aus und ruft zwei Dateien ab, @ angular/platform-browser-dynamic und @ angular/core, diese sind jedoch beide in der Datei vendor.js enthalten und werden daher auch verwendet nicht gefunden werden.
Normalerweise werden die eckigen Dateien aus dem Ordner node_modules geladen, aber das ist, soweit ich weiß, eine sehr schlechte Idee in der Produktion, und weil diese Anwendung aus einem öffentlichen Ordner meiner statischen Dateiserver Middleware in meiner Anwendung serviert wird, inklusive node_modules in der Verteilung scheint mir eine wirklich schlechte Idee zu sein.
Mit anderen Antworten aus der Umgebung hat so bekommen Sie mir dieses gulpfile.js:Concat alle angular2 Abhängigkeiten zu einer Datei
var gulp = require('gulp'),
path = require('path'),
gutil = require('gulp-util'),
uglify = require('gulp-uglify'),
ts = require('gulp-typescript'),
project = ts.createProject('./tsconfig.json'),
nodesource = "node_modules/",
sass = require('gulp-sass'),
concat = require('gulp-concat'),
sourcemaps = require('gulp-sourcemaps'),
jspm = require('gulp-jspm-build'),
input = {
sass: [
'frontend/sass/**/*.scss'
],
typescript: [
'typings/index.d.ts',
'frontend/ts/**/*.ts'
],
body: [
'frontend/html/**/*.html'
],
vendor: [
nodesource + 'core-js/client/shim.min.js',
nodesource + 'zone.js/dist/zone.js',
nodesource + 'reflect-metadata/Reflect.js',
nodesource + 'systemjs/dist/system.src.js',
nodesource + 'rxjs/bundles/Rx.umd.js',
nodesource + '@angular/core/bundles/core.umd.js',
nodesource + '@angular/compiler/bundles/compiler.umd.js',
nodesource + '@angular/common/bundles/common.umd.js',
nodesource + '@angular/http/bundles/http.umd.js',
nodesource + '@angular/platform-browser/bundles/platform-browser.umd.js',
nodesource + '@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'./systemjs.config.js'
]
},
outputDir = './public';
gulp.task('compile:ts', function() {
return gulp.src(input.typescript)
.pipe(ts(project))
.js.pipe(gulp.dest(outputDir))
});
gulp.task('bundle-vendor', function() {
return gulp.src(input.vendor)
.pipe(concat('vendor.js'))
.pipe(gulp.dest(outputDir));
});
gulp.task('copy-html', function() {
return gulp.src(input.body)
.pipe(gulp.dest(outputDir));
});
gulp.task('default', ['compile:ts', 'bundle-vendor', 'copy-html'], function(){});
Diese systemjs.config.js Datei:
System.config({
baseURL: "/",
map: {
'app': 'app.js'
},
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app').catch(function(err){ console.error(err); });
Diese Dateien meiner Typoskript macht in eine Datei app.js, Die Datei Vendor.js verhält sich nicht so, als hätte sie die Abhängigkeiten, die mein Projekt benötigt.
Ich vermute, ich packe die falschen eckigen Dateien, aber ich bin nicht ganz sicher, welche Dateien sonst geholt werden sollten, und wie.
systemjs.config.js werden den vendor.js hinzugefügt, wie beabsichtigt, es wird geladen einfach nicht die richtig Abhängigkeiten. –
okay. Aktualisierung meiner Antwort – candidJ
Während das könnte sogar eine Chance zu arbeiten, ich werde nur nicht tun, da dies die vendor.js Datei 20 MB macht, die wirklich nicht etwas ist, dass ich meine Kunden entweder dienen möchte . –