I am trying to implement AOT and Rollup per https://angular.io/docs/ts/latest/cookbook/aot-compiler.html#!#tree-shaking
I run rollup per:"node_modules/.bin/rollup" -c scripts/rollup-config.js
and the result is a build.js file with just the entry file and nothing else. There are no errors and just one warning: "'default' is imported from external module 'rollup' but never used"
The "aot" folder does contain all the relevant compiled ngfactory files.
Following is the entry file:
import { platformBrowser } from '@angular/platform-browser';
import { AppModuleNgFactory } from '../aot/app/app.module.ngfactory';
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
The rollup-js.config:
import rollup from 'rollup'
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify'
export default {
entry: 'scripts/app/main.js',
dest: 'scripts/app/build.js', // output a single application bundle
sourceMap: true,
sourceMapFile: 'scripts/app/build.js.map',
format: 'iife',
onwarn: function(warning) {
// Skip certain warnings
// should intercept ... but doesn't in some rollup versions
if ( warning.code === 'THIS_IS_UNDEFINED' ) { return; }
// intercepts in some rollup versions
if ( warning.indexOf("The 'this' keyword is equivalent to 'undefined'") > -1 ) { return; }
// console.warn everything else
console.warn( warning.message );
},
plugins: [
nodeResolve({jsnext: true, module: true}),
commonjs({
include: '../node_modules/rxjs/**'
}),
uglify()
]
}
and my systemjs just in case its relevant:
(function (global) {
System.config({
paths: {
// paths serve as alias
'npm:': 'libs/'
},
// map tells the System loader where to look for things
map: {
// our app is within the app folder
app: 'approot',
appjit: 'approot',
// 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',
'jquery': 'npm:jquery/dist/jquery.min.js',
'moment': 'npm:moment/moment.js',
'ng2-bootstrap/ng2-bootstrap': 'npm:ng2-bootstrap/bundles/ng2-bootstrap.umd.js',
'ng2-select/ng2-select': 'npm:ng2-select/ng2-select.js',
"ng2-popover": "libs/ng2-popover",
'angular2-ui-switch': 'libs/angular2-ui-switch/dist/index.js',
"angular2-text-mask": "libs/angular2-text-mask/dist",
"text-mask-core": "libs/text-mask-core/"
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: {
main: './app/main.js',
defaultExtension: 'js'
},
appjit: {
main: './app/main-jit.js',
defaultExtension: 'js'
},
rxjs: {
defaultExtension: 'js'
},
'angular-in-memory-web-api': {
main: './index.js',
defaultExtension: 'js'
},
'libs/ng2-select': {
defaultExtension: 'js'
},
'libs/ng2-popover': {
main: "index.js",
defaultExtension: 'js'
},
'libs/angular2-text-mask/dist': {
main: "angular2TextMask.js",
defaultExtension: 'js'
},
'libs/text-mask-core/': {
main: "textMaskCore.js",
defaultExtension: 'js'
},
'libs/angular2-ui-switch': {
main: "index.js",
defaultExtension: 'js'
}
}
});
})(this);
My folder structure is as follows:
My environment:
Attack on Titan will come to its conclusion when Final Season Part 3 (or Final Arc) airs in 2023, the anime's official Japanese Twitter revealed Sunday. The news came as the last episode of the Final Season Part 2 aired on Japanese TV and hit streaming services Crunchyroll and Funimation.
Attack on Titan Has Been Removed From Netflix US.
"Shinganshina Trio" for Eren, Mikasa, and Armin.
While it's never been confirmed, the assumption is that Attack on Titan takes place in a fictional version of Europe, with the walled-in medieval cities of Germany a clear inspiration.
In your [visual studio project]/scripts/aot folder, there should be a main.ts file, visual studio will compile it to main.js using tsconfig.json but not tsconfig-aot.json, check your main.js file, if it looks like
"use strict";
var platform_browser_1 = require("@angular/platform-browser");
var app_module_ngfactory_1 = require("./app.module.ngfactory");
platform_browser_1.platformBrowser().bootstrapModuleFactory(app_module_ngfactory_1.AppModuleNgFactory);
you need to update in your tsconfig.json:
{
"module": "commonjs",
}
to
{
"module": "es2015",
}
I also was following the official angular2 AOT guilde myself and due to lack of a simple working example I have created this github repository. I hope it helps you.
If you are a windows user, you should definitely be able to get it working in git-bash terminal (tested by me).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With