diff --git a/package.json b/package.json index f3972c23b5..520f7b3677 100644 --- a/package.json +++ b/package.json @@ -18,18 +18,21 @@ "clean:css:shim:ts": "rimraf **/*.css.shim.ts", "clean:scss:shim:ts": "rimraf **/*.scss.shim.ts", "clean:prod": "npm run clean:ngc && npm run clean:json && npm run clean:css && npm run clean:css:ts && npm run clean:scss:ts && npm run clean:css:shim:ts && npm run clean:scss:shim:ts && npm run clean:dist", - "clean": "npm run clean:log && npm run clean:dist && npm run clean:prod && npm run clean:node", + "clean": "npm run clean:log && npm run clean:prod && npm run clean:node", "sass": "node-sass src -o src --include-path node_modules --output-style compressed -q", "sass:watch": "node-sass -w src -o src --include-path node_modules --output-style compressed -q", + "rollup": "rollup -c rollup-server.js && rollup -c rollup-client.js", "prebuild": "npm run clean:dist && npm run sass", "build": "webpack --progress", "build:prod": "webpack --config webpack.prod.config.ts", - "build:prod:ngc": "npm run clean:prod && npm run sass && npm run ngc && npm run clean:dist && npm run build:prod", - "build:prod:ngc:json": "npm run clean:prod && npm run sass && npm run ngc && npm run clean:dist && npm run build:prod:json", + "build:prod:rollup": "npm run build:prod && npm run rollup", + "build:prod:ngc": "npm run clean:prod && npm run sass && npm run ngc && npm run build:prod:rollup", + "build:prod:ngc:json": "npm run clean:prod && npm run sass && npm run ngc && npm run build:prod:json:rollup", "build:prod:json": "webpack --config webpack.prod.config.ts --json | webpack-bundle-size-analyzer", + "build:prod:json:rollup": "npm run build:prod:json && npm run rollup", "ngc": "ngc -p tsconfig.aot.json", "prestart": "npm run build:prod:ngc:json", - "server": "node dist/server/index.js", + "server": "node dist/server/build.js", "server:dev": "nodemon --debug dist/server/index.js", "start": "npm run server", "start:dev": "npm run clean:prod && npm run build && npm run server", @@ -44,24 +47,25 @@ "debug:start": "npm run build && npm run debug:server", "debug:build": "node-nightly --inspect --debug-brk node_modules/webpack/bin/webpack.js", "debug:build:prod": "node-nightly --inspect --debug-brk node_modules/webpack/bin/webpack.js --config webpack.prod.config.ts", + "docs": "typedoc --options typedoc.json ./src", "lint": "tslint \"src/**/*.ts\" || true", - "global": "npm install -g angular-cli nodemon npm-check-updates rimraf ts-node typedoc typescript webpack webpack-bundle-size-analyzer marked node-gyp" + "global": "npm install -g angular-cli nodemon npm-check-updates rimraf ts-node typedoc typescript webpack webpack-bundle-size-analyzer rollup marked node-gyp" }, "dependencies": { - "@angular/common": "2.2.4", - "@angular/compiler": "2.2.4", - "@angular/compiler-cli": "2.2.4", - "@angular/core": "2.2.4", - "@angular/forms": "2.2.4", - "@angular/http": "2.2.4", - "@angular/platform-browser": "2.2.4", - "@angular/platform-browser-dynamic": "2.2.4", - "@angular/platform-server": "2.2.4", - "@angular/router": "3.2.4", - "@angular/upgrade": "2.2.4", + "@angular/common": "2.2.3", + "@angular/compiler": "2.2.3", + "@angular/compiler-cli": "2.2.3", + "@angular/core": "2.2.3", + "@angular/forms": "2.2.3", + "@angular/http": "2.2.3", + "@angular/platform-browser": "2.2.3", + "@angular/platform-browser-dynamic": "2.2.3", + "@angular/platform-server": "2.2.3", + "@angular/router": "3.2.3", + "@angular/upgrade": "2.2.3", "@angularclass/bootloader": "1.0.1", "@angularclass/idle-preload": "1.0.4", - "@ng-bootstrap/ng-bootstrap": "1.0.0-alpha.14", + "@ng-bootstrap/ng-bootstrap": "1.0.0-alpha.15", "@ngrx/core": "^1.2.0", "@ngrx/effects": "^2.0.0", "@ngrx/router-store": "^1.2.5", @@ -86,7 +90,7 @@ "zone.js": "0.6.26" }, "devDependencies": { - "@ngtools/webpack": "1.1.7", + "@ngtools/webpack": "1.1.9", "@types/body-parser": "0.0.33", "@types/compression": "0.0.33", "@types/cookie-parser": "1.3.30", @@ -96,26 +100,31 @@ "@types/memory-cache": "0.0.29", "@types/mime": "0.0.29", "@types/morgan": "1.7.32", - "@types/node": "6.0.51", + "@types/node": "6.0.52", "@types/serve-static": "1.7.31", "@types/webfontloader": "1.6.27", "angular2-template-loader": "0.6.0", - "autoprefixer": "6.5.3", + "autoprefixer": "6.5.4", "awesome-typescript-loader": "2.2.4", - "codelyzer": "2.0.0-beta.1", + "codelyzer": "2.0.0-beta.3", "concurrently": "3.1.0", "cookie-parser": "1.4.3", "copy-webpack-plugin": "4.0.1", - "imports-loader": "0.6.5", + "imports-loader": "0.7.0", "json-loader": "0.5.4", - "node-sass": "3.13.0", + "node-sass": "4.0.0", "nodemon": "1.11.0", "raw-loader": "0.5.1", "reflect-metadata": "0.1.8", "rimraf": "2.5.4", + "rollup": "0.37.0", + "rollup-plugin-commonjs": "6.0.0", + "rollup-plugin-node-globals": "1.1.0", + "rollup-plugin-node-resolve": "2.0.0", + "rollup-plugin-uglify": "1.0.1", "string-replace-loader": "1.0.5", "ts-helpers": "1.1.2", - "ts-node": "1.7.0", + "ts-node": "1.7.2", "tslint": "4.0.2", "tslint-loader": "3.3.0", "typedoc": "0.5.1", @@ -123,8 +132,8 @@ "v8-lazy-parse-webpack-plugin": "0.3.0", "webpack": "2.1.0-beta.27", "webpack-bundle-analyzer": "1.4.1", - "webpack-dev-middleware": "1.8.4", + "webpack-dev-middleware": "1.9.0", "webpack-dev-server": "2.1.0-beta.11", - "webpack-merge": "1.0.2" + "webpack-merge": "1.1.1" } } diff --git a/rollup-client.js b/rollup-client.js new file mode 100644 index 0000000000..1e50d256aa --- /dev/null +++ b/rollup-client.js @@ -0,0 +1,18 @@ +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: 'dist/client/main.bundle.js', + dest: 'dist/client/build.js', + sourceMap: false, + format: 'iife', + plugins: [ + nodeResolve({jsnext: true, module: true}), + commonjs({ + include: 'node_modules/rxjs/**', + }), + uglify() + ] +} diff --git a/rollup-server.js b/rollup-server.js new file mode 100644 index 0000000000..a7e1ae3ce8 --- /dev/null +++ b/rollup-server.js @@ -0,0 +1,18 @@ +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: 'dist/server/index.js', + dest: 'dist/server/build.js', + sourceMap: false, + format: 'iife', + plugins: [ + nodeResolve({jsnext: true, module: true}), + commonjs({ + include: 'node_modules/rxjs/**', + }), + uglify() + ] +} diff --git a/src/index-aot.html b/src/index-aot.html new file mode 100644 index 0000000000..58d8ac39b3 --- /dev/null +++ b/src/index-aot.html @@ -0,0 +1,20 @@ + + + + + + DSpace + + + + + + + + + Loading DSpace ... + + + + + diff --git a/src/server.aot.ts b/src/server.aot.ts index a649912eb3..e8c1e98a7d 100644 --- a/src/server.aot.ts +++ b/src/server.aot.ts @@ -79,7 +79,7 @@ app.get('/data.json', serverApi); app.use('/api', createMockApi()); function ngApp(req, res) { - res.render('index', { + res.render('index-aot', { req, res, // time: true, // use this to determine what part of your app is slow only in development diff --git a/tsconfig.aot.json b/tsconfig.aot.json index 468a6d392d..2d233217a4 100644 --- a/tsconfig.aot.json +++ b/tsconfig.aot.json @@ -1,15 +1,23 @@ { "compilerOptions": { + "target": "es5", + "module": "es2015", + "moduleResolution": "node", "declaration": false, + "removeComments": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, - "module": "commonjs", - "moduleResolution": "node", + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noEmitHelpers": true, + "noImplicitAny": false, + "noImplicitReturns": false, + "noImplicitUseStrict": false, + "noFallthroughCasesInSwitch": true, + "pretty": false, "outDir": "dist", "sourceMap": true, "sourceRoot": "src", - "noEmitHelpers": true, - "target": "es5", "typeRoots": [ "node_modules/@types" ], @@ -20,6 +28,7 @@ "./src/*.d.ts" ], "angularCompilerOptions": { + "skipMetadataEmit": true, "debug": false }, "compileOnSave": false, diff --git a/tsconfig.json b/tsconfig.json index c10735a758..226f3dbe19 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,23 @@ { "compilerOptions": { - "declaration": false, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, + "target": "es5", "module": "commonjs", "moduleResolution": "node", + "declaration": false, + "removeComments": false, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noEmitHelpers": true, + "noImplicitAny": false, + "noImplicitReturns": false, + "noImplicitUseStrict": false, + "noFallthroughCasesInSwitch": true, + "pretty": true, "outDir": "dist", "sourceMap": true, "sourceRoot": "src", - "noEmitHelpers": true, - "target": "es5", "typeRoots": [ "node_modules/@types" ], diff --git a/webpack.prod.config.ts b/webpack.prod.config.ts index 7516b4da39..1a5fb02c30 100644 --- a/webpack.prod.config.ts +++ b/webpack.prod.config.ts @@ -12,10 +12,8 @@ export const commonPlugins = [ new V8LazyParseWebpackPlugin(), new webpack.DefinePlugin({ - 'process.env': { - 'NODE_ENV': JSON.stringify('production'), - 'AOT': true - } + 'process.env.NODE_ENV': JSON.stringify('production'), + 'process.env.AOT': true }), // Loader options