I am new to angular2 and I want to know the use of all the objects present inside systemjs.config.js file.
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: 'dist',
main: 'main.js',
// 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',
'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
'primeng': 'npm:primeng'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: { main: 'main.js', defaultExtension: 'js' },
api: { defaultExtension: 'js' },
rxjs: {defaultExtension: 'js'},
'node_modules/primeng': {
format: 'cjs',
defaultExtension: 'js'
}
}
});
For example the code pasted above has objects like paths which can be used to specify alias, in the same manner I want to know the use of map and all the inner objects of map, so on.
Well, first of all you tell where the npm package is located, usually at the root, hence:
paths: {
// paths serve as alias
'npm:': 'node_modules/'
}
then you give aliases ( shortcut names ) to the packages that you will be using, in this case angular and some 3rd party libs like rxjs, ...
map: {
// our app is within the app folder
app: 'dist',
main: 'main.js',
// 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',
'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js',
'primeng': 'npm:primeng'
}
So instead of typing the whole path when you import a library(e.g. 'npm:@angular/core/bundles/core.umd.js'), you will only have to import the alias you gave it ('@angular/core'). When importing the alias, you are sure you're importing the right library.
the 'npm:' in front of the full paths of the libraries, refers to the path 'npm' you initiated above.