From e37efdb9f300ea4a703f9979f4e37cc160a73bb0 Mon Sep 17 00:00:00 2001 From: Heo Sangmin Date: Sat, 19 May 2018 02:16:39 +0900 Subject: [PATCH] refactor: upgrade to NodeJS 8, Angular 6, CLI 6, Electron 2.0, RxJS 6.1 --- .angular-cli.json | 63 ------------------- .travis.yml | 3 +- LICENSE.md | 2 +- README.md | 8 +-- angular.json | 135 ++++++++++++++++++++++++++++++++++++++++ karma.conf.js | 11 ++-- package.json | 72 ++++++++++----------- src/favicon.512x512.png | Bin 0 -> 27119 bytes src/test.ts | 2 - src/tsconfig.spec.json | 3 +- tsconfig.json | 2 + tslint.json | 1 - 12 files changed, 187 insertions(+), 115 deletions(-) delete mode 100644 .angular-cli.json create mode 100644 angular.json create mode 100644 src/favicon.512x512.png diff --git a/.angular-cli.json b/.angular-cli.json deleted file mode 100644 index eb9f1c9c5..000000000 --- a/.angular-cli.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "project": { - "name": "angularelectron" - }, - "apps": [ - { - "root": "src", - "outDir": "dist", - "assets": [ - "assets", - "favicon.ico", - "favicon.png", - "favicon.icns", - "favicon.256x256.png" - ], - "index": "index.html", - "main": "main.ts", - "polyfills": "polyfills.ts", - "test": "test.ts", - "tsconfig": "tsconfig.app.json", - "testTsconfig": "tsconfig.spec.json", - "prefix": "app", - "styles": [ - "styles.scss" - ], - "scripts": [], - "environmentSource": "environments/environment.ts", - "environments": { - "dev": "environments/environment.ts", - "prod": "environments/environment.prod.ts" - } - } - ], - "e2e": { - "protractor": { - "config": "./protractor.conf.js" - } - }, - "lint": [ - { - "project": "src/tsconfig.app.json", - "exclude": "**/node_modules/**" - }, - { - "project": "src/tsconfig.spec.json", - "exclude": "**/node_modules/**" - }, - { - "project": "e2e/tsconfig.e2e.json", - "exclude": "**/node_modules/**" - } - ], - "test": { - "karma": { - "config": "./karma.conf.js" - } - }, - "defaults": { - "styleExt": "scss", - "component": {} - } -} diff --git a/.travis.yml b/.travis.yml index e3d2b94c4..e4e5e2f30 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: node_js node_js: - - "7" - - "6" + - 8 install: - npm install script: diff --git a/LICENSE.md b/LICENSE.md index 03a2105ee..344422742 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,4 @@ -Copyright 2017 - Maxime GRIS +Copyright 2018 - Maxime GRIS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index 68650f4f1..5f6df4699 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ Bootstrap and package your project with Angular 5(+) and Electron (Typescript + Currently runs with: -- Angular v5.2.5 -- Angular-CLI v1.6.4 -- Electron v1.8.2 -- Electron Builder v20.0.4 +- Angular v6.0.2 +- Angular-CLI v6.0.3 +- Electron v2.0.1 +- Electron Builder v20.13.4 With this sample, you can : diff --git a/angular.json b/angular.json new file mode 100644 index 000000000..63f082d4f --- /dev/null +++ b/angular.json @@ -0,0 +1,135 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "angular-electron": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist", + "index": "src/index.html", + "main": "src/main.ts", + "tsConfig": "src/tsconfig.app.json", + "polyfills": "src/polyfills.ts", + "assets": [ + "src/assets", + "src/favicon.ico", + "src/favicon.png", + "src/favicon.icns", + "src/favicon.256x256.png", + "src/favicon.512x512.png" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + }, + "configurations": { + "production": { + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "fileReplacements": [] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "angular-electron:build" + }, + "configurations": { + "production": { + "browserTarget": "angular-electron:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "angular-electron:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "karmaConfig": "./karma.conf.js", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "scripts": [], + "styles": [ + "src/styles.scss" + ], + "assets": [ + "src/assets", + "src/favicon.ico", + "src/favicon.png", + "src/favicon.icns", + "src/favicon.256x256.png", + "src/favicon.512x512.png" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "angular-electron-e2e": { + "root": "", + "sourceRoot": "", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "./protractor.conf.js", + "devServerTarget": "angular-electron:serve" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "e2e/tsconfig.e2e.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "angular-electron", + "schematics": { + "@schematics/angular:component": { + "prefix": "app", + "styleext": "scss" + }, + "@schematics/angular:directive": { + "prefix": "app" + } + } +} diff --git a/karma.conf.js b/karma.conf.js index 84b4cd5ac..74605c81d 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -4,27 +4,28 @@ module.exports = function (config) { config.set({ basePath: '', - frameworks: ['jasmine', '@angular/cli'], + frameworks: ['jasmine', '@angular-devkit/build-angular'], plugins: [ require('karma-jasmine'), require('karma-chrome-launcher'), require('karma-jasmine-html-reporter'), require('karma-coverage-istanbul-reporter'), - require('@angular/cli/plugins/karma') + require('@angular-devkit/build-angular/plugins/karma') ], client:{ clearContext: false // leave Jasmine Spec Runner output visible in browser }, files: [ - { pattern: './src/test.ts', watched: false } + ], preprocessors: { - './src/test.ts': ['@angular/cli'] + }, mime: { 'text/x-typescript': ['ts','tsx'] }, coverageIstanbulReporter: { + dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ], fixWebpackSourcePaths: true }, @@ -39,6 +40,6 @@ module.exports = function (config) { logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], - singleRun: false + singleRun: true }); }; diff --git a/package.json b/package.json index 9b5f7b0ac..efe7450e6 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ }, "keywords": [ "angular", - "angular 5", + "angular 6", "electron", "typescript", "sass" @@ -21,7 +21,7 @@ "ng": "ng", "start": "node hooks/environments/set_profile.js && npm-run-all -p ng:serve electron:serve", "build": "node hooks/environments/set_profile.js && ng build && npm run electron:tsc", - "build:prod": "node hooks/environments/set_profile.js && ng build --prod && npm run electron:tsc", + "build:prod": "node hooks/environments/set_profile.js && ng build -c production && npm run electron:tsc", "ng:serve": "ng serve -o", "electron:tsc": "tsc main.ts", "electron:serve": "wait-on http-get://localhost:4200/ && npm run electron:tsc && electron . --serve", @@ -29,53 +29,53 @@ "electron:linux": "npm run build:prod && npx electron-builder build --linux", "electron:windows": "npm run build:prod && npx electron-builder build --windows", "electron:mac": "npm run build:prod && npx electron-builder build --mac", - "test": "karma start ./karma.conf.js", + "test": "ng test", "pree2e:build": "webdriver-manager update --gecko false && npm run ng serve", "pree2e:protractor": "wait-on http-get://localhost:4200/ && protractor ./protractor.conf.js", "e2e": "npm-run-all -p -r pree2e:build pree2e:protractor" }, "dependencies": {}, "devDependencies": { - "@angular/cli": "1.7.4", - "@angular/common": "5.2.9", - "@angular/compiler": "5.2.9", - "@angular/compiler-cli": "5.2.9", - "@angular/core": "5.2.9", - "@angular/forms": "5.2.9", - "@angular/http": "5.2.9", - "@angular/language-service": "5.2.9", - "@angular/platform-browser": "5.2.9", - "@angular/platform-browser-dynamic": "5.2.9", - "@angular/router": "5.2.9", - "@ngx-translate/core": "9.1.1", - "@ngx-translate/http-loader": "2.0.1", - "@types/core-js": "0.9.36", - "@types/jasmine": "2.8.6", + "@angular-devkit/build-angular": "0.6.3", + "@angular/cli": "6.0.3", + "@angular/common": "6.0.2", + "@angular/compiler": "6.0.2", + "@angular/compiler-cli": "6.0.2", + "@angular/core": "6.0.2", + "@angular/forms": "6.0.2", + "@angular/http": "6.0.2", + "@angular/language-service": "6.0.2", + "@angular/platform-browser": "6.0.2", + "@angular/platform-browser-dynamic": "6.0.2", + "@angular/router": "6.0.2", + "@ngx-translate/core": "10.0.1", + "@ngx-translate/http-loader": "3.0.1", + "@types/jasmine": "2.8.7", "@types/jasminewd2": "2.0.3", - "@types/node": "7.0.7", + "@types/node": "8.0.58", "codelyzer": "4.2.1", - "core-js": "2.5.5", - "cross-env": "5.1.4", + "core-js": "2.5.6", + "cross-env": "5.1.5", "dotenv": "5.0.1", - "electron": "1.8.4", - "electron-builder": "20.8.1", + "electron": "2.0.1", + "electron-builder": "20.13.4", "electron-reload": "1.2.2", - "fs-extra": "5.0.0", - "jasmine-core": "2.99.1", + "fs-extra": "6.0.1", + "jasmine-core": "3.1.0", "jasmine-spec-reporter": "4.2.1", - "karma": "2.0.0", + "karma": "2.0.2", "karma-chrome-launcher": "2.2.0", - "karma-coverage-istanbul-reporter": "1.4.2", - "karma-jasmine": "1.1.1", - "karma-jasmine-html-reporter": "0.2.2", - "npm-run-all": "4.1.2", - "npx": "10.0.1", - "protractor": "5.3.1", + "karma-coverage-istanbul-reporter": "2.0.0", + "karma-jasmine": "1.1.2", + "karma-jasmine-html-reporter": "1.1.0", + "npm-run-all": "4.1.3", + "npx": "10.2.0", + "protractor": "5.3.2", "replace": "0.3.0", - "rxjs": "5.5.8", - "ts-node": "4.1.0", - "tslint": "5.9.1", - "typescript": "2.6.2", + "rxjs": "6.1.0", + "ts-node": "6.0.3", + "tslint": "5.10.0", + "typescript": "2.7.2", "wait-on": "2.1.0", "webdriver-manager": "12.0.6", "zone.js": "0.8.26" diff --git a/src/favicon.512x512.png b/src/favicon.512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..c513ddceb7db5a8bfd5b248bdd24c0ac61a32aab GIT binary patch literal 27119 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 PT