Skip to content

Commit daff198

Browse files
niieaniEisenbergEffect
authored andcommitted
Webpack skeleton fixes (aurelia#708)
* feat(all): use CircleCI for most skeletons * feat(*-webpack): add editorconfig * chore(gitignore): ignore yarn.lock * feat(*-webpack): add recommended plugins for VSCode * fix(webpack): update dependencies, typings and configurations esnext: - use the babel-env-preset instead of es2015 for evergreen targetting - simplify webpack.config file and use babel-require to run it esnext and typescript: - update Webpack and related dependencies to support the latest beta.25 - use the external aurelia-protractor-plugin typescript: - update to ^2.1 - remove babel dependency and 2nd transpile step (async/await supported natively) - fix protractor typings - add typings to blur-image - enable strictNullChecks by default - convert the config file to TypeScript fix aurelia#696, aurelia#695, aurelia#670, aurelia#664, aurelia#628 * fix(circleCI): fix typo and temporarily disable testing JSPM JSPM waiting on fixes from aurelia#709 * fix(typescript-webpack): remove leftover code
1 parent 4e85d39 commit daff198

33 files changed

+586
-602
lines changed

circle.yml

+25-8
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,31 @@ machine:
1111

1212
dependencies:
1313
pre:
14-
- npm install -g npm
14+
- npm install -g yarn jspm
1515
override:
16-
- npm install
17-
18-
general:
19-
build_dir: skeleton-esnext-webpack
16+
- cd skeleton-esnext-webpack && yarn
17+
- cd skeleton-typescript-webpack && yarn
18+
# - cd skeleton-esnext && yarn
19+
# - cd skeleton-esnext && jspm install
20+
# - cd skeleton-typescript && yarn
21+
# - cd skeleton-typescript && jspm install
22+
cache_directories:
23+
- "skeleton-esnext/node_modules"
24+
- "skeleton-esnext/jspm_packages"
25+
- "skeleton-esnext-webpack/node_modules"
26+
- "skeleton-typescript/node_modules"
27+
- "skeleton-typescript/jspm_packages"
28+
- "skeleton-typescript-webpack/node_modules"
2029

2130
test:
22-
post:
23-
- npm run build
24-
- npm run build:prod
31+
override:
32+
- cd skeleton-esnext-webpack && npm test
33+
- cd skeleton-esnext-webpack && npm run e2e
34+
- cd skeleton-esnext-webpack && npm run build
35+
- cd skeleton-esnext-webpack && npm run build:prod
36+
- cd skeleton-typescript-webpack && npm test
37+
- cd skeleton-typescript-webpack && npm run e2e
38+
- cd skeleton-typescript-webpack && npm run build
39+
- cd skeleton-typescript-webpack && npm run build:prod
40+
# - cd skeleton-esnext && npm test
41+
# - cd skeleton-typescript && npm test

skeleton-esnext-webpack/.babelrc

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
{
2+
"env": {
3+
"webpack": {
4+
"plugins": [
5+
"transform-decorators-legacy",
6+
"transform-class-properties"
7+
],
8+
"presets": [
9+
[
10+
"env",
11+
{
12+
"targets": {
13+
"browsers": [
14+
"last 2 versions",
15+
"not ie <= 11"
16+
]
17+
},
18+
"loose": true,
19+
"modules": false
20+
}
21+
]
22+
]
23+
},
24+
"e2e": {
25+
"plugins": [
26+
"transform-decorators-legacy",
27+
"transform-class-properties"
28+
],
29+
"presets": [
30+
[
31+
"env",
32+
{
33+
"targets": {
34+
"browsers": [
35+
"last 2 versions",
36+
"not ie <= 11"
37+
]
38+
},
39+
"loose": true,
40+
"modules": "commonjs"
41+
}
42+
]
43+
]
44+
},
45+
"node": {
46+
"presets": [
47+
[
48+
"env",
49+
{
50+
"targets": {
51+
"node": 4
52+
},
53+
"loose": true,
54+
"modules": "commonjs"
55+
}
56+
]
57+
]
58+
}
59+
}
60+
}

skeleton-esnext-webpack/.editorconfig

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# EditorConfig is awesome: http://EditorConfig.org
2+
3+
# top-most EditorConfig file
4+
root = true
5+
6+
# Unix-style newlines with a newline ending every file
7+
[*]
8+
end_of_line = lf
9+
insert_final_newline = true
10+
11+
# 2 space indentation
12+
[**.*]
13+
indent_style = space
14+
indent_size = 2

skeleton-esnext-webpack/.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ npm-debug.log*
77
/.awcache
88
/electron.js*
99
/release
10-
/test/coverage
10+
/test/coverage
11+
yarn.lock
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"recommendations": [
3+
"AureliaEffect.aurelia",
4+
"msjsdiag.debugger-for-chrome",
5+
"steoates.autoimport",
6+
"EditorConfig.EditorConfig",
7+
"christian-kohler.path-intellisense",
8+
"behzad88.Aurelia"
9+
]
10+
}

skeleton-esnext-webpack/favicon.ico

2.2 KB
Binary file not shown.

skeleton-esnext-webpack/index.html

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
<html>
33
<head>
44
<meta charset="utf-8">
5-
<title><%- webpackConfig.metadata.title %></title>
5+
<title><%- htmlWebpackPlugin.options.metadata.title %></title>
66
<meta name="viewport" content="width=device-width, initial-scale=1">
7-
<base href="<%- webpackConfig.metadata.baseUrl %>">
7+
<base href="<%- htmlWebpackPlugin.options.metadata.baseUrl %>">
88
<!-- imported CSS are concatenated and added automatically -->
99
</head>
1010
<body aurelia-app="main">
1111
<div class="splash">
12-
<div class="message"><%- webpackConfig.metadata.title %></div>
12+
<div class="message"><%- htmlWebpackPlugin.options.metadata.title %></div>
1313
<i class="fa fa-spinner fa-spin"></i>
1414
</div>
15-
<% if (webpackConfig.metadata.ENV === 'development') { %>
15+
<% if (htmlWebpackPlugin.options.metadata.ENV === 'development') { %>
1616
<!-- Webpack Dev Server reload -->
1717
<script src="/webpack-dev-server.js"></script>
1818
<% } %>

skeleton-esnext-webpack/jsconfig.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"compilerOptions": {
33
"target": "es2015",
4+
"lib": ["es2017", "dom"],
45
"experimentalDecorators": true
56
},
67
"exclude": [
78
"node_modules",
8-
"dist",
9-
"release"
9+
"dist"
1010
]
11-
}
11+
}

skeleton-esnext-webpack/package.json

+59-66
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,41 @@
22
"name": "aurelia-skeleton-navigation-webpack",
33
"version": "1.0.3",
44
"description": "A starter kit for building a standard navigation-style app with Aurelia and webpack.",
5-
"main": "dist/electron.js",
6-
"productName": "Aurelia Electron",
5+
"main": "dist/main.js",
76
"scripts": {
8-
"test": "cross-env NODE_ENV=test ./node_modules/karma/bin/karma start test/karma.conf.js",
7+
"pretest": "del test/coverage",
8+
"test": "cross-env BABEL_ENV=node NODE_ENV=test ./node_modules/karma/bin/karma start test/karma.conf.js",
9+
"test:debug": "npm test -- --single-run=false --debug",
910
"webdriver:update": "cross-env ./node_modules/.bin/webdriver-manager update",
1011
"webdriver:start": "cross-env ./node_modules/.bin/webdriver-manager start",
1112
"pree2e": "npm run webdriver:update -- --standalone",
12-
"e2e": "concurrently --kill-others \"npm run e2e:start-when-ready\" \"cross-env WEBPACK_PORT=19876 npm start\"",
13-
"e2e:start-when-ready": "wait-on --timeout 20000 http-get://localhost:19876/index.html && npm run e2e:start",
13+
"e2e": "concurrently --success first --kill-others \"npm run e2e:start-when-ready\" \"cross-env WEBPACK_PORT=19876 npm start\"",
14+
"e2e:start-when-ready": "wait-on --timeout 120000 http-get://localhost:19876/index.html && npm run e2e:start",
1415
"e2e:start": "cross-env ./node_modules/.bin/protractor test/protractor.conf.js",
1516
"e2e:live": "npm run e2e:start -- --elementExplorer",
16-
"clean": "npm cache clean && rimraf node_modules test/coverage dist",
17-
"clean:dist": "rimraf dist",
17+
"clean": "npm cache clean && del node_modules test/coverage dist",
18+
"clean:dist": "del dist",
1819
"preclean:install": "npm run clean",
19-
"clean:install": "npm set progress=false && npm install",
20+
"clean:install": "npm install",
2021
"preclean:start": "npm run clean",
2122
"clean:start": "npm start",
2223
"watch": "npm run watch:dev",
2324
"watch:dev": "npm run build:dev -- --watch",
2425
"watch:dev:hmr": "npm run watch:dev -- --hot",
2526
"watch:test": "npm run test -- --auto-watch --no-single-run",
2627
"watch:prod": "npm run build:prod -- --watch",
27-
"build": "cross-env NODE_ENV=development npm run build:dev",
28+
"build": "npm run build:dev",
2829
"prebuild:dev": "npm run clean:dist",
2930
"build:dev": "cross-env NODE_ENV=development npm run webpack -- --progress --profile",
3031
"prebuild:prod": "npm run clean:dist",
3132
"build:prod": "cross-env NODE_ENV=production npm run webpack -- --progress --profile",
3233
"start": "npm run server:dev",
3334
"server": "npm run server:dev",
34-
"server:dev": "cross-env NODE_ENV=development node ./node_modules/webpack-dev-server/bin/webpack-dev-server --inline --progress --profile --watch",
35+
"server:dev": "cross-env NODE_ENV=development npm run webpack-dev-server -- --inline --progress --profile --watch",
3536
"server:dev:hmr": "npm run server:dev -- --hot",
3637
"server:prod": "http-server dist --cors",
37-
"webpack": "cross-env ./node_modules/.bin/webpack",
38-
"webpack-dev-server": "cross-env ./node_modules/.bin/webpack-dev-server"
38+
"webpack": "cross-env BABEL_ENV=node ./node_modules/.bin/webpack",
39+
"webpack-dev-server": "cross-env BABEL_ENV=node ./node_modules/.bin/webpack-dev-server"
3940
},
4041
"repository": {
4142
"type": "git",
@@ -69,74 +70,66 @@
6970
"dependencies": {
7071
"aurelia-bootstrapper-webpack": "^1.0.0",
7172
"aurelia-event-aggregator": "^1.0.0",
72-
"aurelia-fetch-client": "^1.0.0",
73-
"aurelia-framework": "^1.0.0",
73+
"aurelia-fetch-client": "^1.0.1",
74+
"aurelia-framework": "^1.0.7",
7475
"aurelia-history-browser": "^1.0.0",
75-
"aurelia-loader-webpack": "^1.0.0",
76+
"aurelia-loader-webpack": "^1.0.3",
7677
"aurelia-logging-console": "^1.0.0",
7778
"aurelia-pal-browser": "^1.0.0",
78-
"aurelia-polyfills": "^1.0.0",
79-
"aurelia-route-recognizer": "^1.0.0",
80-
"aurelia-router": "^1.0.2",
79+
"aurelia-polyfills": "^1.1.1",
80+
"aurelia-route-recognizer": "^1.1.0",
81+
"aurelia-router": "^1.0.7",
8182
"aurelia-templating-binding": "^1.0.0",
82-
"aurelia-templating-resources": "^1.0.0",
83+
"aurelia-templating-resources": "^1.1.1",
8384
"aurelia-templating-router": "^1.0.0",
84-
"bluebird": "^3.4.1",
85+
"bluebird": "^3.4.6",
8586
"bootstrap": "^3.3.7",
86-
"font-awesome": "^4.6.3",
87+
"font-awesome": "^4.7.0",
8788
"isomorphic-fetch": "^2.2.1",
88-
"jquery": "^3.1.0"
89+
"jquery": "^3.1.1"
8990
},
9091
"devDependencies": {
91-
"@easy-webpack/config-aurelia": "^2.0.1",
92-
"@easy-webpack/config-babel": "^2.0.2",
93-
"@easy-webpack/config-common-chunks-simple": "^2.0.1",
94-
"@easy-webpack/config-copy-files": "^1.0.0",
95-
"@easy-webpack/config-css": "^2.3.2",
96-
"@easy-webpack/config-env-development": "^2.1.1",
97-
"@easy-webpack/config-env-production": "^2.1.0",
98-
"@easy-webpack/config-external-source-maps": "^2.0.1",
99-
"@easy-webpack/config-fonts-and-images": "^1.2.1",
100-
"@easy-webpack/config-generate-index-html": "^2.0.1",
101-
"@easy-webpack/config-global-bluebird": "^1.2.0",
102-
"@easy-webpack/config-global-jquery": "^1.2.0",
103-
"@easy-webpack/config-global-regenerator": "^1.2.0",
104-
"@easy-webpack/config-html": "^2.0.2",
105-
"@easy-webpack/config-json": "^2.0.2",
106-
"@easy-webpack/config-test-coverage-istanbul": "^2.0.2",
107-
"@easy-webpack/config-uglify": "^2.1.0",
108-
"@easy-webpack/core": "^1.3.2",
109-
"aurelia-tools": "^0.2.4",
110-
"babel-eslint": "^7.1.0",
92+
"@easy-webpack/config-aurelia": "^2.2.2",
93+
"@easy-webpack/config-babel": "^4.0.0",
94+
"@easy-webpack/config-common-chunks-simple": "^2.0.3",
95+
"@easy-webpack/config-copy-files": "^1.1.2",
96+
"@easy-webpack/config-css": "^3.1.0",
97+
"@easy-webpack/config-env-development": "^2.1.4",
98+
"@easy-webpack/config-env-production": "^2.2.2",
99+
"@easy-webpack/config-external-source-maps": "^3.1.0",
100+
"@easy-webpack/config-fonts-and-images": "^2.1.0",
101+
"@easy-webpack/config-generate-index-html": "^2.1.1",
102+
"@easy-webpack/config-global-bluebird": "^2.1.0",
103+
"@easy-webpack/config-global-jquery": "^2.1.0",
104+
"@easy-webpack/config-global-regenerator": "^1.2.2",
105+
"@easy-webpack/config-html": "^3.1.0",
106+
"@easy-webpack/config-json": "^3.1.0",
107+
"@easy-webpack/config-test-coverage-istanbul": "^3.2.0",
108+
"@easy-webpack/config-uglify": "^2.2.3",
109+
"@easy-webpack/core": "^1.4.5",
110+
"aurelia-protractor-plugin": "^1.0.0",
111+
"aurelia-tools": "^1.0.0",
112+
"babel-plugin-transform-class-properties": "^6.18.0",
111113
"babel-plugin-transform-decorators-legacy": "^1.3.4",
112-
"babel-preset-es2015": "^6.9.0",
113-
"babel-preset-es2015-loose": "^7.0.0",
114-
"babel-preset-es2015-loose-native-modules": "^1.0.0",
115-
"babel-preset-stage-1": "^6.5.0",
116-
"babel-register": "^6.11.6",
117-
"concurrently": "^2.2.0",
118-
"cross-env": "^2.0.0",
119-
"eslint": "^3.9.0",
114+
"babel-preset-env": "0.0.7",
115+
"babel-register": "^6.18.0",
116+
"concurrently": "^3.1.0",
117+
"cross-env": "^3.1.3",
118+
"eslint": "^3.9.1",
119+
"del-cli": "^0.2.0",
120120
"http-server": "^0.9.0",
121-
"jasmine-core": "^2.4.1",
122-
"karma": "^1.1.2",
123-
"karma-chrome-launcher": "^1.0.1",
121+
"jasmine-core": "^2.5.2",
122+
"karma": "^1.3.0",
123+
"karma-chrome-launcher": "^2.0.0",
124124
"karma-coverage": "^1.1.1",
125125
"karma-jasmine": "^1.0.2",
126-
"karma-mocha-reporter": "^2.0.4",
127-
"karma-remap-istanbul": "^0.1.1",
126+
"karma-mocha-reporter": "^2.2.0",
127+
"karma-remap-istanbul": "^0.2.1",
128128
"karma-sourcemap-loader": "^0.3.7",
129-
"karma-webpack": "^1.7.0",
130-
"protractor": "^4.0.0",
131-
"rimraf": "^2.5.4",
132-
"wait-on": "^1.5.2",
133-
"webpack": "2.1.0-beta.22",
129+
"karma-webpack": "^1.8.0",
130+
"protractor": "^4.0.10",
131+
"wait-on": "^1.5.3",
132+
"webpack": "2.1.0-beta.25",
134133
"webpack-dev-server": ">=2.1.0-beta.0 || ^2.1.0"
135-
},
136-
"babel": {
137-
"presets": [
138-
"es2015",
139-
"stage-1"
140-
]
141134
}
142135
}

skeleton-esnext-webpack/test/e2e/welcome.po.js

+11-9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import regeneratorRuntime from 'regenerator-runtime';
2+
13
export class PageObjectWelcome {
24

35
constructor() {
@@ -25,15 +27,15 @@ export class PageObjectWelcome {
2527
}
2628

2729
openAlertDialog() {
28-
return browser.wait(() => {
29-
this.pressSubmitButton();
30-
31-
return browser.wait(ExpectedConditions.alertIsPresent(), 5000).then(
32-
browser.switchTo().alert().then(
33-
// use alert.accept instead of alert.dismiss which results in a browser crash
34-
function(alert) { alert.accept(); return true; },
35-
function() { return false; }
36-
)
30+
return browser.wait(async () => {
31+
await this.pressSubmitButton();
32+
33+
await browser.wait(ExpectedConditions.alertIsPresent(), 5000);
34+
35+
return browser.switchTo().alert().then(
36+
// use alert.accept instead of alert.dismiss which results in a browser crash
37+
function(alert) { alert.accept(); return true; },
38+
function() { return false; }
3739
);
3840
});
3941
}

0 commit comments

Comments
 (0)