mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 04:14:21 +08:00
chore(build): move to rollup for e2e, move to es6 imports and type definitions
move to rollup for e2e, move to es6 imports and type definitions
This commit is contained in:
127
package.json
127
package.json
@ -38,80 +38,83 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular/compiler-cli": "0.6.2",
|
||||
"@types/glob": "^5.0.29",
|
||||
"@types/gulp": "^3.8.29",
|
||||
"@types/hammerjs": "^2.0.30",
|
||||
"@types/jasmine": "^2.2.31",
|
||||
"@types/merge2": "0.0.28",
|
||||
"@types/mkdirp": "0.3.28",
|
||||
"@types/connect": "3.4.30",
|
||||
"@types/del": "2.2.31",
|
||||
"@types/glob": "5.0.30",
|
||||
"@types/gulp": "3.8.32",
|
||||
"@types/gulp-watch": "4.1.29",
|
||||
"@types/hammerjs": "2.0.33",
|
||||
"@types/jasmine": "2.2.34",
|
||||
"@types/lodash": "4.14.35",
|
||||
"@types/merge2": "0.3.29",
|
||||
"@types/mkdirp": "0.3.29",
|
||||
"@types/node": "6.0.34",
|
||||
"@types/protractor": "^1.5.17",
|
||||
"@types/run-sequence": "0.0.27",
|
||||
"@types/semver": "5.3.29",
|
||||
"@types/protractor": "1.5.19",
|
||||
"@types/run-sequence": "0.0.28",
|
||||
"@types/semver": "5.3.30",
|
||||
"@types/serve-static": "1.7.31",
|
||||
"@types/through2": "2.0.29",
|
||||
"canonical-path": "0.0.2",
|
||||
"connect": "^3.3.4",
|
||||
"connect": "3.5.0",
|
||||
"core-js": "2.4.1",
|
||||
"cpr": "^0.4.1",
|
||||
"del": "^1.1.1",
|
||||
"dgeni": "^0.4.1",
|
||||
"dgeni-packages": "^0.10.18",
|
||||
"event-stream": "^3.3.1",
|
||||
"file-loader": "^0.9.0",
|
||||
"glob": "^7.0.6",
|
||||
"gulp": "^3.9.1",
|
||||
"gulp-autoprefixer": "^2.3.0",
|
||||
"gulp-clean-css": "^2.0.12",
|
||||
"gulp-concat": "^2.6.0",
|
||||
"gulp-git": "^1.11.2",
|
||||
"gulp-if": "^1.2.5",
|
||||
"gulp-remember": "^0.3.0",
|
||||
"gulp-rename": "~1.2.0",
|
||||
"gulp-sass": "^2.0.4",
|
||||
"gulp-scss-lint": "^0.3.9",
|
||||
"gulp-shell": "^0.4.0",
|
||||
"gulp-strip-debug": "^1.1.0",
|
||||
"gulp-tslint": "^5.0.0",
|
||||
"gulp-typescript": "^2.13.6",
|
||||
"gulp-util": "^3.0.6",
|
||||
"gulp-watch": "^4.2.4",
|
||||
"html-entities": "^1.1.3",
|
||||
"ionic-cz-conventional-changelog": "^1.0.0",
|
||||
"jasmine-core": "^2.4.1",
|
||||
"jasmine-node": "^1.14.5",
|
||||
"karma": "^1.1.1",
|
||||
"karma-browserstack-launcher": "^1.0.1",
|
||||
"karma-chrome-launcher": "^1.0.1",
|
||||
"karma-coverage": "^1.1.1",
|
||||
"karma-firefox-launcher": "^1.0.0",
|
||||
"karma-jasmine": "^1.0.2",
|
||||
"karma-sauce-launcher": "^1.0.0",
|
||||
"karma-sourcemap-loader": "^0.3.7",
|
||||
"merge2": "^0.3.6",
|
||||
"mkdirp": "^0.5.1",
|
||||
"cpr": "2.0.0",
|
||||
"del": "2.2.2",
|
||||
"dgeni": "0.4.2",
|
||||
"dgeni-packages": "0.16.0",
|
||||
"event-stream": "3.3.4",
|
||||
"file-loader": "0.9.0",
|
||||
"glob": "7.0.6",
|
||||
"gulp": "3.9.1",
|
||||
"gulp-autoprefixer": "3.1.1",
|
||||
"gulp-clean-css": "2.0.12",
|
||||
"gulp-concat": "2.6.0",
|
||||
"gulp-git": "1.11.3",
|
||||
"gulp-if": "2.0.1",
|
||||
"gulp-remember": "0.3.1",
|
||||
"gulp-rename": "1.2.2",
|
||||
"gulp-sass": "2.3.2",
|
||||
"gulp-scss-lint": "0.4.0",
|
||||
"gulp-shell": "0.5.2",
|
||||
"gulp-strip-debug": "1.1.0",
|
||||
"gulp-tslint": "6.1.1",
|
||||
"gulp-typescript": "2.13.6",
|
||||
"gulp-util": "3.0.7",
|
||||
"gulp-watch": "4.3.9",
|
||||
"html-entities": "1.2.0",
|
||||
"ionic-cz-conventional-changelog": "1.0.0",
|
||||
"jasmine-core": "2.5.2",
|
||||
"jasmine-node": "1.14.5",
|
||||
"karma": "1.3.0",
|
||||
"karma-chrome-launcher": "2.0.0",
|
||||
"karma-coverage": "1.1.1",
|
||||
"karma-jasmine": "1.0.2",
|
||||
"karma-sourcemap-loader": "0.3.7",
|
||||
"merge2": "1.0.2",
|
||||
"mkdirp": "0.5.1",
|
||||
"node-html-encoder": "0.0.2",
|
||||
"remap-istanbul": "^0.6.4",
|
||||
"request": "2.53.0",
|
||||
"resolve-bin": "^0.4.0",
|
||||
"remap-istanbul": "0.6.4",
|
||||
"request": "2.75.0",
|
||||
"resolve-bin": "0.4.0",
|
||||
"rollup": "0.36.0",
|
||||
"rollup-plugin-commonjs": "5.0.4",
|
||||
"rollup-plugin-multi-entry": "2.0.1",
|
||||
"rollup-plugin-node-resolve": "2.0.0",
|
||||
"rollup-plugin-uglify": "1.0.1",
|
||||
"run-sequence": "^1.1.0",
|
||||
"sassdoc": "^2.1.20",
|
||||
"semver": "^5.0.1",
|
||||
"serve-static": "^1.9.2",
|
||||
"systemjs": "^0.19.37",
|
||||
"through2": "^0.6.3",
|
||||
"ts-node": "^0.7.3",
|
||||
"tslint": "^3.15.1",
|
||||
"run-sequence": "1.2.2",
|
||||
"sassdoc": "2.1.20",
|
||||
"semver": "5.3.0",
|
||||
"serve-static": "1.11.1",
|
||||
"systemjs": "0.19.38",
|
||||
"through2": "2.0.1",
|
||||
"ts-node": "1.3.0",
|
||||
"tslint": "3.15.1",
|
||||
"tslint-ionic-rules": "0.0.5",
|
||||
"typescript": "rc",
|
||||
"uglify": "0.1.5",
|
||||
"vinyl": "^1.2.0",
|
||||
"webpack": "^2.1.0-beta.20",
|
||||
"webpack-dev-server": "^1.14.1",
|
||||
"yargs": "^3.6.0",
|
||||
"vinyl": "1.2.0",
|
||||
"webpack": "2.1.0-beta.20",
|
||||
"webpack-dev-server": "1.16.1",
|
||||
"yargs": "5.0.0",
|
||||
"zone.js": "0.6.21"
|
||||
},
|
||||
"config": {
|
||||
|
@ -1,11 +0,0 @@
|
||||
import 'core-js/es6';
|
||||
import 'core-js/es7/reflect';
|
||||
import 'zone.js/dist/zone';
|
||||
import 'zone.js/dist/long-stack-trace-zone';
|
||||
|
||||
import { platformBrowser } from '@angular/platform-browser';
|
||||
import { enableProdMode } from '@angular/core';
|
||||
import { AppModuleNgFactory } from './AppModule.ngfactory';
|
||||
|
||||
enableProdMode();
|
||||
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
|
@ -1,21 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<!-- https://www.chromium.org/developers/design-documents/chromium-graphics/how-to-get-gpu-rasterization -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/dist/demos/scrollbar-fix.css">
|
||||
<link ios-href="../output.ios.css" rel="stylesheet">
|
||||
<link md-href="../output.md.css" rel="stylesheet">
|
||||
<link wp-href="../output.wp.css" rel="stylesheet">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<ion-app>
|
||||
</ion-app>
|
||||
|
||||
<script src="./index.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,22 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"module": "es2015",
|
||||
"lib": [
|
||||
"dom",
|
||||
"es2015"
|
||||
],
|
||||
"moduleResolution": "node",
|
||||
"declaration": true,
|
||||
"noImplicitAny": false,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true
|
||||
},
|
||||
"angularCompilerOptions": {
|
||||
"skipMetadataEmit": true
|
||||
},
|
||||
"include": [
|
||||
"dist/demos/**/entry.ts",
|
||||
"dist/demos/**/AppModule.ts"
|
||||
]
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
var entryData = require('./webpackEntryPoints.json');
|
||||
var path = require('path');
|
||||
|
||||
module.exports = {
|
||||
devtool: "source-map",
|
||||
|
||||
entry: entryData,
|
||||
|
||||
output: {
|
||||
"path": path.join(__dirname, '../../'),
|
||||
"filename": "[name].js"
|
||||
},
|
||||
|
||||
resolve: {
|
||||
extensions: ["", ".js", ".json"],
|
||||
mainFields: ["main", "browser"]
|
||||
}
|
||||
};
|
@ -1,42 +0,0 @@
|
||||
{
|
||||
"dist/demos/action-sheet/index": "./dist/demos/action-sheet/entry",
|
||||
"dist/demos/alert/index": "./dist/demos/alert/entry",
|
||||
"dist/demos/button/index": "./dist/demos/button/entry",
|
||||
"dist/demos/checkbox/index": "./dist/demos/checkbox/entry",
|
||||
"dist/demos/config/index": "./dist/demos/config/entry",
|
||||
"dist/demos/datetime/index": "./dist/demos/datetime/entry",
|
||||
"dist/demos/events/index": "./dist/demos/events/entry",
|
||||
"dist/demos/hide-when/index": "./dist/demos/hide-when/entry",
|
||||
"dist/demos/icon/index": "./dist/demos/icon/entry",
|
||||
"dist/demos/infinite-scroll/index": "./dist/demos/infinite-scroll/entry",
|
||||
"dist/demos/input/index": "./dist/demos/input/entry",
|
||||
"dist/demos/item-reorder/index": "./dist/demos/item-reorder/entry",
|
||||
"dist/demos/item-sliding/index": "./dist/demos/item-sliding/entry",
|
||||
"dist/demos/item/index": "./dist/demos/item/entry",
|
||||
"dist/demos/label/index": "./dist/demos/label/entry",
|
||||
"dist/demos/list/index": "./dist/demos/list/entry",
|
||||
"dist/demos/loading/index": "./dist/demos/loading/entry",
|
||||
"dist/demos/local-storage/index": "./dist/demos/local-storage/entry",
|
||||
"dist/demos/menu/index": "./dist/demos/menu/entry",
|
||||
"dist/demos/modal/index": "./dist/demos/modal/entry",
|
||||
"dist/demos/nav-params/index": "./dist/demos/nav-params/entry",
|
||||
"dist/demos/navbar/index": "./dist/demos/navbar/entry",
|
||||
"dist/demos/navigation/index": "./dist/demos/navigation/entry",
|
||||
"dist/demos/platform/index": "./dist/demos/platform/entry",
|
||||
"dist/demos/popover/index": "./dist/demos/popover/entry",
|
||||
"dist/demos/radio/index": "./dist/demos/radio/entry",
|
||||
"dist/demos/range/index": "./dist/demos/range/entry",
|
||||
"dist/demos/refresher/index": "./dist/demos/refresher/entry",
|
||||
"dist/demos/scroll/index": "./dist/demos/scroll/entry",
|
||||
"dist/demos/searchbar/index": "./dist/demos/searchbar/entry",
|
||||
"dist/demos/segment/index": "./dist/demos/segment/entry",
|
||||
"dist/demos/select/index": "./dist/demos/select/entry",
|
||||
"dist/demos/show-when/index": "./dist/demos/show-when/entry",
|
||||
"dist/demos/slides/index": "./dist/demos/slides/entry",
|
||||
"dist/demos/tabs/index": "./dist/demos/tabs/entry",
|
||||
"dist/demos/textarea/index": "./dist/demos/textarea/entry",
|
||||
"dist/demos/title/index": "./dist/demos/title/entry",
|
||||
"dist/demos/toast/index": "./dist/demos/toast/entry",
|
||||
"dist/demos/toggle/index": "./dist/demos/toggle/entry",
|
||||
"dist/demos/toolbar/index": "./dist/demos/toolbar/entry"
|
||||
}
|
@ -43,9 +43,7 @@
|
||||
document.body.classList.remove('rtl');
|
||||
}
|
||||
</script>
|
||||
<script src="/webpack-dev-server.js"></script>
|
||||
<script src="../../../../../../dist/ionic-angular/polyfills/polyfills.js"></script>
|
||||
<script src="../../../../vendor.js"></script>
|
||||
<script src="./index.js"></script>
|
||||
<script src="../../../../polyfills/polyfills.ng.js"></script>
|
||||
<script src="./app.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,18 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"module": "es2015",
|
||||
"lib": [
|
||||
"dom",
|
||||
"es2015"
|
||||
],
|
||||
"moduleResolution": "node",
|
||||
"declaration": true,
|
||||
"noImplicitAny": false,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true
|
||||
},
|
||||
"angularCompilerOptions": {
|
||||
"skipMetadataEmit": true
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
import 'core-js/es6';
|
||||
import 'core-js/es7/reflect';
|
||||
import 'zone.js/dist/zone';
|
||||
import 'zone.js/dist/proxy';
|
||||
import 'zone.js/dist/long-stack-trace-zone';
|
@ -1,10 +0,0 @@
|
||||
// Angular 2
|
||||
import '@angular/platform-browser';
|
||||
import '@angular/platform-browser-dynamic';
|
||||
import '@angular/common';
|
||||
import '@angular/core';
|
||||
import '@angular/http';
|
||||
|
||||
// RxJS
|
||||
import 'rxjs/add/operator/map';
|
||||
import 'rxjs/add/operator/mergeMap';
|
@ -1,34 +0,0 @@
|
||||
var entryData = require('./webpackEntryPoints.json');
|
||||
var path = require('path')
|
||||
|
||||
entryData["dist/e2e/vendor"] = "./scripts/e2e/vendor";
|
||||
entryData["dist/e2e/polyfills"] = "./scripts/e2e/polyfills";
|
||||
|
||||
module.exports = {
|
||||
devtool: "source-map",
|
||||
|
||||
entry: entryData,
|
||||
|
||||
output: {
|
||||
"path": path.join(__dirname, '../../'),
|
||||
"filename": "[name].js"
|
||||
},
|
||||
|
||||
resolve: {
|
||||
extensions: ["", ".js", ".json"],
|
||||
mainFields: ["module", "browser"]
|
||||
},
|
||||
|
||||
module: {
|
||||
loaders: [
|
||||
{
|
||||
test : /\.css$/,
|
||||
loader : 'file-loader?config=cssLoader'
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
cssLoader: {
|
||||
name: 'test/css/[name]-[hash].[ext]'
|
||||
},
|
||||
};
|
4
scripts/gulp/declarations.d.ts
vendored
4
scripts/gulp/declarations.d.ts
vendored
@ -1,7 +1,11 @@
|
||||
declare module 'dgeni';
|
||||
declare module 'event-stream';
|
||||
declare module 'gulp-if';
|
||||
declare module 'gulp-scss-lint';
|
||||
declare module 'gulp-tslint';
|
||||
declare module 'html-entities';
|
||||
declare module 'rollup';
|
||||
declare module 'rollup-plugin-commonjs';
|
||||
declare module 'rollup-plugin-node-resolve';
|
||||
declare module 'vinyl';
|
||||
declare module 'yargs';
|
@ -1,5 +1,5 @@
|
||||
import { COMMONJS_MODULE, DIST_BUILD_ROOT, DIST_BUILD_COMMONJS_ROOT, ES_MODULE } from '../constants';
|
||||
import { task } from 'gulp';
|
||||
import { COMMONJS_MODULE, DIST_BUILD_ROOT, DIST_BUILD_COMMONJS_ROOT, ES_MODULE } from '../constants';
|
||||
import { copySourceToDest, copySwiperToPath, createTempTsConfig, deleteFiles, runNgc} from '../util';
|
||||
|
||||
|
||||
|
@ -1,12 +1,18 @@
|
||||
import * as del from 'del';
|
||||
import { task } from 'gulp';
|
||||
|
||||
|
||||
task('clean', (done: () => void) => {
|
||||
const del = require('del');
|
||||
del(['dist/**'], done);
|
||||
task('clean', (done: Function) => {
|
||||
del(['dist/**']).then(() => {
|
||||
done();
|
||||
}).catch(err => {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
||||
task('clean.src', (done: () => void) => {
|
||||
const del = require('del');
|
||||
del(['src/**/*.js', 'src/**/*.d.ts', '!src/components/slides/swiper-widget.*'], done);
|
||||
task('clean.src', (done: Function) => {
|
||||
del(['src/**/*.js', 'src/**/*.d.ts', '!src/components/slides/swiper-widget.*']).then(() => {
|
||||
done();
|
||||
}).catch(err => {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
|
@ -1,12 +1,11 @@
|
||||
const gulp = require('gulp');
|
||||
|
||||
import * as gulp from 'gulp';
|
||||
|
||||
gulp.task('default', help);
|
||||
|
||||
gulp.task('help', help);
|
||||
|
||||
function help() {
|
||||
const taskList = Object.keys(gulp.tasks)
|
||||
const taskList = Object.keys((gulp as any).tasks)
|
||||
.filter(taskName => taskName !== 'default' && taskName !== 'help')
|
||||
.sort()
|
||||
.map(taskName => taskName = ' ' + taskName);
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { dirname, join } from 'path';
|
||||
import { exec } from 'child_process';
|
||||
import { dirname, join } from 'path';
|
||||
|
||||
import * as glob from 'glob';
|
||||
import { task } from 'gulp';
|
||||
import * as rollup from 'rollup';
|
||||
|
@ -1,15 +1,16 @@
|
||||
import { createReadStream, writeFileSync } from 'fs';
|
||||
import { join, relative } from 'path';
|
||||
import { DEMOS_ROOT, DEMOS_SRC_ROOT } from '../constants';
|
||||
import { src, dest, task } from 'gulp';
|
||||
|
||||
import * as Dgeni from 'dgeni';
|
||||
import { split, map } from 'event-stream';
|
||||
import { src, dest, task } from 'gulp';
|
||||
import { AllHtmlEntities } from 'html-entities';
|
||||
import * as mkdirp from 'mkdirp';
|
||||
import { valid }from 'semver';
|
||||
import { argv } from 'yargs';
|
||||
|
||||
import { DEMOS_ROOT, DEMOS_SRC_ROOT } from '../constants';
|
||||
|
||||
|
||||
task('docs', () => {
|
||||
const docVersion = argv['doc-version'] || 'nightly';
|
||||
@ -28,7 +29,7 @@ task('docs', () => {
|
||||
}
|
||||
});
|
||||
|
||||
task('docs.copyDemos', [], () => {
|
||||
task('docs.copyDemos', ['demos.build'], () => {
|
||||
const config = require('../../config.json');
|
||||
const outputDir = join(config.docsDest, 'dist', 'demos');
|
||||
return src([`${DEMOS_ROOT}/css`, `${DEMOS_ROOT}/fonts`, `${DEMOS_ROOT}/polyfills`, `${DEMOS_SRC_ROOT}`])
|
||||
|
@ -1,28 +1,38 @@
|
||||
import { COMMONJS_MODULE, DIST_E2E_COMPONENTS_ROOT, DIST_E2E_ROOT, DIST_NAME, E2E_NAME, LOCAL_SERVER_PORT, PROJECT_ROOT, SCRIPTS_ROOT, SRC_COMPONENTS_ROOT, SRC_ROOT } from '../constants';
|
||||
import {dest, src, start, task} from 'gulp';
|
||||
import * as path from 'path';
|
||||
import { accessSync, F_OK, readFileSync, writeFileSync } from 'fs';
|
||||
import { dirname, join } from 'path';
|
||||
|
||||
import { compileSass, copyFonts, createTempTsConfig, createTimestamp, deleteFiles, runNgc, runWebpack, setSassIonicVersion, writePolyfills } from '../util';
|
||||
import * as glob from 'glob';
|
||||
import {dest, src, start, task} from 'gulp';
|
||||
import * as gulpif from 'gulp-if';
|
||||
import * as watch from 'gulp-watch';
|
||||
import { template } from 'lodash';
|
||||
import * as rollup from 'rollup';
|
||||
import * as nodeResolve from 'rollup-plugin-node-resolve';
|
||||
import * as commonjs from 'rollup-plugin-commonjs';
|
||||
import * as runSequence from 'run-sequence';
|
||||
import { obj } from 'through2';
|
||||
import * as VinylFile from 'vinyl';
|
||||
import { argv } from 'yargs';
|
||||
|
||||
import { DIST_E2E_COMPONENTS_ROOT, DIST_E2E_ROOT, DIST_NAME, E2E_NAME, ES_MODULE, LOCAL_SERVER_PORT, PROJECT_ROOT, SCRIPTS_ROOT, SRC_COMPONENTS_ROOT, SRC_ROOT } from '../constants';
|
||||
import { compileSass, copyFonts, createTempTsConfig, createTimestamp, deleteFiles, runNgc, setSassIonicVersion, writePolyfills } from '../util';
|
||||
|
||||
task('e2e', e2eBuild);
|
||||
|
||||
function e2eBuild(done: Function) {
|
||||
const runSequence = require('run-sequence');
|
||||
runSequence('e2e.polyfill', 'e2e.copySource', 'e2e.compileTests', 'e2e.copyExternalDependencies', 'e2e.sass', 'e2e.fonts', 'e2e.beforeWebpack', 'e2e.runWebpack', done);
|
||||
function e2eBuild(done: (err: any) => void) {
|
||||
runSequence('e2e.polyfill', 'e2e.copySource', 'e2e.compileTests', 'e2e.copyExternalDependencies', 'e2e.sass', 'e2e.fonts', 'e2e.bundle', done);
|
||||
}
|
||||
|
||||
task('e2e.copyAndCompile', (done: Function) => {
|
||||
const runSequence = require('run-sequence');
|
||||
runSequence('e2e.copySource', 'e2e.compileTests', 'e2e.beforeWebpack', 'e2e.runWebpack', done);
|
||||
task('e2e.polyfill', () => {
|
||||
writePolyfills('dist/e2e/polyfills');
|
||||
});
|
||||
|
||||
task('e2e.copyAndCompile', (done: (err: any) => void) => {
|
||||
runSequence('e2e.copySource', 'e2e.compileTests', 'e2e.bundle', done);
|
||||
});
|
||||
|
||||
task('e2e.copySource', (done: Function) => {
|
||||
const gulpif = require('gulp-if');
|
||||
const _ = require('lodash');
|
||||
const VinylFile = require('vinyl');
|
||||
const through2 = require('through2');
|
||||
|
||||
const buildConfig = require('../../build/config');
|
||||
|
||||
const stream = src([`${SRC_ROOT}/**/*`, `!${SRC_ROOT}/**/*.spec.ts`])
|
||||
@ -36,16 +46,16 @@ task('e2e.copySource', (done: Function) => {
|
||||
const indexTemplate = readFileSync('scripts/e2e/index.html');
|
||||
const indexTs = readFileSync('scripts/e2e/entry.ts');
|
||||
|
||||
return through2.obj(function(file, enc, next) {
|
||||
return obj(function(file, enc, next) {
|
||||
this.push(new VinylFile({
|
||||
base: file.base,
|
||||
contents: new Buffer(indexTemplate),
|
||||
path: path.join(path.dirname(file.path), 'index.html'),
|
||||
path: join(dirname(file.path), 'index.html'),
|
||||
}));
|
||||
this.push(new VinylFile({
|
||||
base: file.base,
|
||||
contents: new Buffer(indexTs),
|
||||
path: path.join(path.dirname(file.path), 'entry.ts'),
|
||||
path: join(dirname(file.path), 'entry.ts'),
|
||||
}));
|
||||
next(null, file);
|
||||
});
|
||||
@ -58,11 +68,11 @@ task('e2e.copySource', (done: Function) => {
|
||||
'windows'
|
||||
];
|
||||
|
||||
let testTemplate = _.template(readFileSync('scripts/e2e/e2e.template.js'));
|
||||
let testTemplate = template(readFileSync('scripts/e2e/e2e.template.js').toString());
|
||||
|
||||
return through2.obj(function(file, enc, next) {
|
||||
return obj(function(file, enc, next) {
|
||||
let self = this;
|
||||
let relativePath = path.dirname(file.path.replace(/^.*?src(\/|\\)components(\/|\\)/, ''));
|
||||
let relativePath = dirname(file.path.replace(/^.*?src(\/|\\)components(\/|\\)/, ''));
|
||||
|
||||
let contents = file.contents.toString();
|
||||
platforms.forEach(function(platform) {
|
||||
@ -96,7 +106,7 @@ function buildE2ETests(folderInfo: any, done: Function) {
|
||||
`./components/${folderInfo.componentName}/test/${folderInfo.componentTest}/entry.ts`,
|
||||
];
|
||||
}
|
||||
createTempTsConfig(includeGlob, COMMONJS_MODULE, `${DIST_E2E_ROOT}/tsconfig.json`);
|
||||
createTempTsConfig(includeGlob, ES_MODULE, `${DIST_E2E_ROOT}/tsconfig.json`);
|
||||
runNgc(`${DIST_E2E_ROOT}/tsconfig.json`, (err) => {
|
||||
if (err) {
|
||||
done(err);
|
||||
@ -108,7 +118,6 @@ function buildE2ETests(folderInfo: any, done: Function) {
|
||||
}
|
||||
|
||||
function getFolderInfo() {
|
||||
const argv = require('yargs').argv;
|
||||
let componentName: string = null;
|
||||
let componentTest: string = null;
|
||||
const folder: string = argv.folder || argv.f;
|
||||
@ -137,49 +146,79 @@ task('e2e.fonts', () => {
|
||||
return copyFonts(`${DIST_E2E_ROOT}/fonts`);
|
||||
});
|
||||
|
||||
task('e2e.beforeWebpack', (done) => {
|
||||
/**
|
||||
* Find all AppModule.ts files because the act as the entry points
|
||||
* for each e2e test.
|
||||
*/
|
||||
let glob = require('glob');
|
||||
let includeGlob = `${DIST_E2E_ROOT}/components/*/test/*/app-module.js`;
|
||||
task('e2e.bundle', (done) => {
|
||||
let includeGlob = `${DIST_E2E_ROOT}/components/*/test/*/entry.js`;
|
||||
let folderInfo = getFolderInfo();
|
||||
if (folderInfo.componentName && folderInfo.componentTest) {
|
||||
includeGlob = `${DIST_E2E_ROOT}/components/${folderInfo.componentName}/test/${folderInfo.componentTest}/app-module.js`;
|
||||
includeGlob = `${DIST_E2E_ROOT}/components/${folderInfo.componentName}/test/${folderInfo.componentTest}/entry.js`;
|
||||
}
|
||||
glob(includeGlob, {}, function(er, files) {
|
||||
var directories = files.map(function(file) {
|
||||
return path.dirname(file);
|
||||
return dirname(file);
|
||||
});
|
||||
|
||||
var webpackEntryPoints = directories.reduce(function(endObj, dir) {
|
||||
let relativePath = dir.replace(process.cwd() + '/', './');
|
||||
endObj[relativePath + '/index'] = relativePath + '/entry';
|
||||
return endObj;
|
||||
}, {});
|
||||
|
||||
let indexFileContents = directories.map(function(dir) {
|
||||
let testName = dir.replace(`${DIST_E2E_ROOT}/components/`, '');
|
||||
let fileName = dir.replace(`${PROJECT_ROOT}`, '');
|
||||
return `<p><a href="${fileName}/index.html">${testName}</a></p>`;
|
||||
}, []);
|
||||
|
||||
writeFileSync('./scripts/e2e/webpackEntryPoints.json', JSON.stringify(webpackEntryPoints, null, 2));
|
||||
writeFileSync(`${DIST_E2E_ROOT}/index.html`,
|
||||
'<!DOCTYPE html><html lang="en"><head></head><body style="width: 500px; margin: 100px auto">\n' +
|
||||
indexFileContents.join('\n') +
|
||||
'</center></body></html>'
|
||||
);
|
||||
done();
|
||||
|
||||
createBundles(files).then(() => {
|
||||
done();
|
||||
}).catch(err => {
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
task('e2e.runWebpack', (done: Function) => {
|
||||
const webpackConfigPath = `${SCRIPTS_ROOT}/e2e/webpack.config.js`;
|
||||
runWebpack(webpackConfigPath, done);
|
||||
});
|
||||
function createBundles(files: string[]) {
|
||||
let start;
|
||||
if (!files) {
|
||||
return Promise.reject(new Error('list of files is null'));
|
||||
} else if ( files.length === 0) {
|
||||
return Promise.resolve();
|
||||
} else {
|
||||
const outputFileName = join(dirname(files[0]), 'app.bundle.js');
|
||||
start = Date.now();
|
||||
return bundle(files[0], outputFileName).then(() => {
|
||||
const end = Date.now();
|
||||
const seconds = (end - start) / 1000;
|
||||
console.log(`Took ${seconds} seconds to process ${files[0]}`);
|
||||
const remainingFiles = files.concat();
|
||||
remainingFiles.shift();
|
||||
return createBundles(remainingFiles);
|
||||
}).catch(err => {
|
||||
return Promise.reject(err);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function bundle(inputFile: string, outputFile: string): Promise<any> {
|
||||
console.log(`Starting rollup on ${inputFile} ... writing to ${outputFile}`);
|
||||
return rollup.rollup({
|
||||
entry: inputFile,
|
||||
plugins: [
|
||||
commonjs(),
|
||||
nodeResolve({
|
||||
module: true,
|
||||
jsnext: true,
|
||||
main: true,
|
||||
extensions: ['.js']
|
||||
})
|
||||
]
|
||||
}).then(bundle => {
|
||||
return bundle.write({
|
||||
format: 'iife',
|
||||
dest: outputFile,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
task('e2e.watch', ['e2e.copyExternalDependencies', 'e2e.sass', 'e2e.fonts'], (done: Function) => {
|
||||
const folderInfo = getFolderInfo();
|
||||
@ -188,7 +227,7 @@ task('e2e.watch', ['e2e.copyExternalDependencies', 'e2e.sass', 'e2e.fonts'], (do
|
||||
return;
|
||||
}
|
||||
|
||||
const e2eTestPath = path.join(SRC_COMPONENTS_ROOT, folderInfo.componentName, 'test', folderInfo.componentTest, 'app-module.ts');
|
||||
const e2eTestPath = join(SRC_COMPONENTS_ROOT, folderInfo.componentName, 'test', folderInfo.componentTest, 'app-module.ts');
|
||||
|
||||
try {
|
||||
accessSync(e2eTestPath, F_OK);
|
||||
@ -210,18 +249,12 @@ task('e2e.watch', ['e2e.copyExternalDependencies', 'e2e.sass', 'e2e.fonts'], (do
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
task('e2e.polyfill', () => {
|
||||
writePolyfills('dist/e2e/polyfills');
|
||||
});
|
||||
|
||||
function e2eWatch(componentName: string, componentTest: string) {
|
||||
const watch = require('gulp-watch');
|
||||
const webpack = require('webpack');
|
||||
const WebpackDevServer = require('webpack-dev-server');
|
||||
const config = require('../../e2e/webpack.config.js');
|
||||
|
||||
config.output.path = path.join(__dirname, '../../../');
|
||||
config.output.path = join(__dirname, '../../../');
|
||||
config.entry = {
|
||||
'dist/e2e/vendor': './scripts/e2e/vendor',
|
||||
'dist-e2e/polyfills': './scripts/e2e/polyfills'
|
||||
|
@ -1,20 +1,19 @@
|
||||
import { task, src } from 'gulp';
|
||||
|
||||
import * as scsslint from 'gulp-scss-lint';
|
||||
import * as tslint from 'gulp-tslint';
|
||||
|
||||
task('lint', ['lint.sass', 'lint.ts']);
|
||||
|
||||
|
||||
task('lint.ts', () => {
|
||||
const tslint = require('gulp-tslint');
|
||||
return src([
|
||||
'src/**/*.ts'
|
||||
]).pipe(tslint())
|
||||
.pipe(tslint.report('verbose'));
|
||||
]).pipe(tslint({
|
||||
formatter: 'verbose'
|
||||
}))
|
||||
.pipe(tslint.report());
|
||||
});
|
||||
|
||||
|
||||
task('lint.sass', function() {
|
||||
const scsslint = require('gulp-scss-lint');
|
||||
return src([
|
||||
'src/**/*.scss',
|
||||
'!src/components/*/test/**/*',
|
||||
|
@ -1,26 +1,30 @@
|
||||
import { spawn, exec } from 'child_process';
|
||||
import { writeFileSync } from 'fs';
|
||||
|
||||
import { dest, src, task } from 'gulp';
|
||||
import * as runSequence from 'run-sequence';
|
||||
|
||||
import { DIST_BUILD_ROOT, SRC_ROOT, PROJECT_ROOT } from '../constants';
|
||||
import { compileSass, copyFonts, createTimestamp, setSassIonicVersion, writePolyfills } from '../util';
|
||||
|
||||
|
||||
task('nightly', (done: Function) => {
|
||||
const runSequence = require('run-sequence');
|
||||
task('nightly', (done: (err: any) => void) => {
|
||||
runSequence('release.nightlyPackage', 'release.publishNightly', done);
|
||||
});
|
||||
|
||||
task('release.prepareNightly', (done: Function) => {
|
||||
const runSequence = require('run-sequence');
|
||||
runSequence(/*'release.pullLatest', 'validate', */'release.copyTools', 'release.copyNpmInfo', 'release.preparePackageJsonTemplate', 'release.nightlyPackageJson', done);
|
||||
task('release.prepareNightly', (done: (err: any) => void) => {
|
||||
runSequence(/*'release.pullLatest', 'validate',*/ 'release.copyTools', 'release.copyNpmInfo', 'release.preparePackageJsonTemplate', 'release.nightlyPackageJson', done);
|
||||
});
|
||||
|
||||
task('release.nightlyPackage', (done: Function) => {
|
||||
const runSequence = require('run-sequence');
|
||||
runSequence('clean', /*'release.prepareNightly',*/ 'release.polyfill', 'compile.release', 'release.prepareNightly', 'release.compileSass', 'release.fonts', 'release.scss', done);
|
||||
task('release.nightlyPackage', (done: (err: any) => void) => {
|
||||
runSequence('clean', 'release.polyfill', 'compile.release', 'release.prepareNightly', 'release.compileSass', 'release.fonts', 'release.scss', done);
|
||||
});
|
||||
|
||||
task('release.polyfill', () => {
|
||||
writePolyfills('dist/ionic-angular/polyfills');
|
||||
});
|
||||
|
||||
task('release.publishNightly', (done: Function) => {
|
||||
const spawn = require('child_process').spawn;
|
||||
|
||||
const npmCmd = spawn('npm', ['publish', '--tag=nightly', DIST_BUILD_ROOT]);
|
||||
npmCmd.stdout.on('data', function (data) {
|
||||
console.log(data.toString());
|
||||
@ -48,29 +52,26 @@ task('release.scss', () => {
|
||||
});
|
||||
|
||||
task('release.pullLatest', (done: Function) => {
|
||||
const gulpGit = require('gulp-git');
|
||||
gulpGit.pull('origin', ['master'], err => {
|
||||
done(err);
|
||||
exec('git pull origin master', (err: Error, stdout: string, stderr: string) => {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
if (err) {
|
||||
done(err);
|
||||
} else if (stderr && stderr.length > 0) {
|
||||
done(new Error('There are outstanding changes. Commit changes in order to perform a release.'));
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
task('release.prepareChangelog', () => {
|
||||
const changelog = require('gulp-conventional-changelog');
|
||||
return gulp.src(`${PROJECT_ROOT}/CHANGELOG.md`)
|
||||
.pipe(changelog({
|
||||
preset: 'angular'
|
||||
}))
|
||||
.pipe(gulp.dest(`${PROJECT_ROOT}`));
|
||||
});
|
||||
|
||||
|
||||
task('release.prepareRootPackageJson', () => {
|
||||
const semver = require('semver');
|
||||
const fs = require('fs');
|
||||
|
||||
let packageJSON = require('./package.json');
|
||||
packageJSON.version = semver.inc(packageJSON.version, 'prerelease', 'beta');
|
||||
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2));
|
||||
return src(`${PROJECT_ROOT}/CHANGELOG.md`)
|
||||
.pipe(changelog({
|
||||
preset: 'angular'
|
||||
}))
|
||||
.pipe(dest(`${PROJECT_ROOT}`));
|
||||
});
|
||||
|
||||
task('release.copyTools', () => {
|
||||
@ -82,7 +83,6 @@ task('release.copyNpmInfo', () => {
|
||||
});
|
||||
|
||||
task('release.preparePackageJsonTemplate', () => {
|
||||
const fs = require('fs');
|
||||
let templatePackageJSON = require(`${PROJECT_ROOT}/scripts/npm/package.json`);
|
||||
const sourcePackageJSON = require(`${PROJECT_ROOT}/package.json`);
|
||||
// copy source package.json data to template
|
||||
@ -100,11 +100,10 @@ task('release.preparePackageJsonTemplate', () => {
|
||||
}
|
||||
}
|
||||
|
||||
fs.writeFileSync(`${DIST_BUILD_ROOT}` + '/package.json', JSON.stringify(templatePackageJSON, null, 2));
|
||||
writeFileSync(`${DIST_BUILD_ROOT}` + '/package.json', JSON.stringify(templatePackageJSON, null, 2));
|
||||
});
|
||||
|
||||
task('release.nightlyPackageJson', () => {
|
||||
const fs = require('fs');
|
||||
const packageJson: any = require(`${DIST_BUILD_ROOT}/package.json`);
|
||||
|
||||
packageJson.version = packageJson.version.split('-')
|
||||
@ -112,10 +111,6 @@ task('release.nightlyPackageJson', () => {
|
||||
.concat(createTimestamp())
|
||||
.join('-');
|
||||
|
||||
fs.writeFileSync(`${DIST_BUILD_ROOT}/package.json`, JSON.stringify(packageJson, null, 2));
|
||||
writeFileSync(`${DIST_BUILD_ROOT}/package.json`, JSON.stringify(packageJson, null, 2));
|
||||
setSassIonicVersion(packageJson.version);
|
||||
});
|
||||
|
||||
task('release.polyfill', () => {
|
||||
writePolyfills('dist/ionic-angular/polyfills');
|
||||
});
|
||||
|
@ -1,7 +1,14 @@
|
||||
import { spawn } from 'child_process';
|
||||
import { createServer } from 'http';
|
||||
import { join, resolve } from 'path';
|
||||
|
||||
import * as connect from 'connect';
|
||||
import { task } from 'gulp';
|
||||
import * as serveStatic from 'serve-static';
|
||||
import { argv } from 'yargs';
|
||||
|
||||
import { DIST_E2E_COMPONENTS_ROOT, PROJECT_ROOT, SCRIPTS_ROOT } from '../constants';
|
||||
import { mergeObjects } from '../util';
|
||||
import * as path from 'path';
|
||||
|
||||
|
||||
task('snapshot', ['e2e'], (done: Function) => {
|
||||
@ -18,8 +25,7 @@ task('snapshot.quick', ['e2e.sass'], (done: Function) => {
|
||||
|
||||
function snapshot(quickMode: boolean, callback: Function) {
|
||||
const snapshotConfig = require('../../snapshot/snapshot.config').config;
|
||||
const protractorConfigFile = path.resolve(SCRIPTS_ROOT, 'snapshot/protractor.config.js');
|
||||
const argv = require('yargs').argv;
|
||||
const protractorConfigFile = resolve(SCRIPTS_ROOT, 'snapshot/protractor.config.js');
|
||||
|
||||
const snapshotDefaults = snapshotConfig.platformDefaults || {};
|
||||
const snapshotValues: any = mergeObjects(snapshotDefaults, argv || {});
|
||||
@ -39,7 +45,7 @@ function snapshot(quickMode: boolean, callback: Function) {
|
||||
e2eSpecs = folderArgPaths[1];
|
||||
}
|
||||
}
|
||||
const specs = path.join(DIST_E2E_COMPONENTS_ROOT, component, 'test', e2eSpecs, '*e2e.js');
|
||||
const specs = join(DIST_E2E_COMPONENTS_ROOT, component, 'test', e2eSpecs, '*e2e.js');
|
||||
console.log(`[snapshot] Specs: ${specs}`);
|
||||
|
||||
const testId = generateTestId();
|
||||
@ -65,17 +71,13 @@ function snapshot(quickMode: boolean, callback: Function) {
|
||||
}
|
||||
|
||||
function protractor(callback, args, testId: string) {
|
||||
const connect = require('connect');
|
||||
const http = require('http');
|
||||
const serveStatic = require('serve-static');
|
||||
const buildConfig = require('../../build/config');
|
||||
const app = connect().use(serveStatic(PROJECT_ROOT));
|
||||
const protractorHttpServer = http.createServer(app).listen(buildConfig.protractorPort);
|
||||
const protractorHttpServer = createServer(app).listen(buildConfig.protractorPort);
|
||||
|
||||
console.log(`Serving ${process.cwd()} on http://localhost:${buildConfig.protractorPort}`);
|
||||
|
||||
const cp = require('child_process');
|
||||
const child = cp.spawn('protractor', args, {
|
||||
const child = spawn('protractor', args, {
|
||||
stdio: [process.stdin, process.stdout, 'pipe']
|
||||
});
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { DIST_VENDOR_ROOT, NPM_VENDOR_FILES, PROJECT_ROOT, SCRIPTS_ROOT } from '../constants';
|
||||
import path = require('path');
|
||||
import { join } from 'path';
|
||||
import { dest, src, task } from 'gulp';
|
||||
|
||||
import { DIST_VENDOR_ROOT, NPM_VENDOR_FILES, PROJECT_ROOT, SCRIPTS_ROOT } from '../constants';
|
||||
|
||||
task('test', ['test.assembleVendorJs', 'compile.karma'], (done: Function) => {
|
||||
karmaTest(false, done);
|
||||
@ -22,7 +21,7 @@ function karmaTest(watch: boolean, done: Function) {
|
||||
const argv = require('yargs').argv;
|
||||
|
||||
let karmaConfig = {
|
||||
configFile: path.join(SCRIPTS_ROOT, 'karma/karma.conf.js'),
|
||||
configFile: join(SCRIPTS_ROOT, 'karma/karma.conf.js'),
|
||||
};
|
||||
|
||||
if (watch) {
|
||||
@ -41,9 +40,9 @@ function karmaTest(watch: boolean, done: Function) {
|
||||
|
||||
task('test.assembleVendorJs', () => {
|
||||
const files = NPM_VENDOR_FILES.map((root) => {
|
||||
const glob = path.join(root, '**/*.+(js|js.map)');
|
||||
return src(path.join('node_modules', glob))
|
||||
.pipe(dest(path.join(DIST_VENDOR_ROOT, root)));
|
||||
const glob = join(root, '**/*.+(js|js.map)');
|
||||
return src(join('node_modules', glob))
|
||||
.pipe(dest(join(DIST_VENDOR_ROOT, root)));
|
||||
});
|
||||
const gulpMerge = require('merge2');
|
||||
return gulpMerge(files);
|
||||
|
@ -3,8 +3,6 @@ import { SRC_ROOT, SRC_COMPONENTS_ROOT } from '../constants';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
|
||||
|
||||
|
||||
task('theme', (done: () => void) => {
|
||||
let opts: GenerateThemeOptions = {
|
||||
src: path.join(SRC_COMPONENTS_ROOT),
|
||||
|
@ -11,8 +11,6 @@ export function config(config) {
|
||||
plugins: [
|
||||
require('karma-jasmine'),
|
||||
require('karma-coverage'),
|
||||
require('karma-browserstack-launcher'),
|
||||
require('karma-sauce-launcher'),
|
||||
require('karma-sourcemap-loader'),
|
||||
require('karma-chrome-launcher'),
|
||||
require('karma-firefox-launcher'),
|
||||
|
@ -1,35 +0,0 @@
|
||||
var webpack = require('webpack');
|
||||
|
||||
module.exports = {
|
||||
entry: [
|
||||
"./dist/index.js"
|
||||
],
|
||||
output: {
|
||||
path: 'dist/bundles',
|
||||
filename: 'ionic.min.js',
|
||||
libraryTarget: 'commonjs2'
|
||||
},
|
||||
externals: [
|
||||
{
|
||||
'angular2/core': {
|
||||
commonjs2: ['angular2', 'core']
|
||||
},
|
||||
'angular2/common': {
|
||||
commonjs2: ['angular2', 'common']
|
||||
},
|
||||
'angular2/http': {
|
||||
commonjs2: ['angular2', 'http']
|
||||
},
|
||||
'angular2/platform/browser': {
|
||||
commonjs2: ['angular2', 'platform', 'browser']
|
||||
},
|
||||
'angular2/instrumentation': {
|
||||
commonjs2: ['angular2', 'instrumentation']
|
||||
},
|
||||
}
|
||||
],
|
||||
plugins:[ new webpack.optimize.UglifyJsPlugin({
|
||||
compress: { warnings: false },
|
||||
sourceMap: false
|
||||
})]
|
||||
};
|
@ -1,29 +0,0 @@
|
||||
module.exports = {
|
||||
entry: [
|
||||
"./dist/index.js"
|
||||
],
|
||||
output: {
|
||||
path: 'dist/bundles',
|
||||
filename: 'ionic.js',
|
||||
libraryTarget: 'commonjs2'
|
||||
},
|
||||
externals: [
|
||||
{
|
||||
'@angular/core': {
|
||||
commonjs2: ['angular2', 'core']
|
||||
},
|
||||
'@angular/common': {
|
||||
commonjs2: ['angular2', 'common']
|
||||
},
|
||||
'@angular/forms' : {
|
||||
commonjs2: ['angular2', 'forms']
|
||||
},
|
||||
'@angular/http': {
|
||||
commonjs2: ['angular2', 'http']
|
||||
},
|
||||
'@angular/platform-browser': {
|
||||
commonjs2: ['angular2', 'platform', 'browser']
|
||||
},
|
||||
}
|
||||
]
|
||||
};
|
Reference in New Issue
Block a user