-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add gcp-build samples #710
Changes from 3 commits
50bbc20
e07b3e4
cca79ce
8ab351e
76d2c2a
a51b060
24e8d4f
28652a9
bdd8076
8caaccd
36262e8
9792a12
6eaefb9
2c52716
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Exclude compiled .js files | ||
*.js | ||
|
||
# Exclude dependencies | ||
node_modules/ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Exclude compiled .js files | ||
*.js | ||
|
||
# Exclude dependencies | ||
node_modules/ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
runtime: nodejs8 | ||
|
||
handlers: | ||
- url: /.* | ||
secure: always | ||
script: auto | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
// Copyright 2018 Google LLC | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the 'License'); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an 'AS IS' BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
/* tslint:disable:no-console no-var-requires */ | ||
|
||
declare var require: any; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we can do better as a TS example. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, it is largely a copy-paste as I'm not terribly familiar with Typescript 😛 @JustinBeckwith is our resident TS expert, so I'll see what he suggests. |
||
declare var process: { | ||
env: { | ||
PORT: string, | ||
}, | ||
}; | ||
|
||
const PORT = process.env.PORT || 8080; | ||
const express = require("express"); | ||
|
||
const app = express(); | ||
|
||
app.get("/", (req, res) => { | ||
res.send("🎉 Hello TypeScript! 🎉"); | ||
}); | ||
|
||
const server = app.listen(PORT, () => { | ||
console.log(`App listening on port ${PORT}`); | ||
}); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
{ | ||
"name": "appengine-typescript", | ||
"description": "An example TypeScript app running on Google App Engine.", | ||
"version": "0.0.1", | ||
"private": true, | ||
"license": "Apache Version 2.0", | ||
"author": "Google Inc.", | ||
"engines": { | ||
"node": "8.x" | ||
}, | ||
"scripts": { | ||
"lint": "tslint index.ts", | ||
"start": "node ./index.js", | ||
"gcp-build": "tsc index.ts" | ||
}, | ||
"dependencies": { | ||
"express": "^4.16.3", | ||
"typescript": "^3.0.1" | ||
}, | ||
"devDependencies": { | ||
"semistandard": "^12.0.1", | ||
"tslint": "^5.11.0" | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"extends": "tslint:recommended" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Minify files on GCP | ||
**/*.min.* | ||
|
||
# Exclude dependencies | ||
node_modules/ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
**/*.min.* |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
runtime: nodejs8 | ||
|
||
handlers: | ||
- url: /static | ||
static_dir: static | ||
|
||
- url: /.* | ||
secure: always | ||
script: auto | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
// Copyright 2018 Google LLC | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the 'License'); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an 'AS IS' BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
'use strict'; | ||
|
||
const express = require('express'); | ||
const path = require('path'); | ||
|
||
const app = express(); | ||
const PORT = process.env.PORT || 8080; | ||
|
||
app.use(express.static('static')); | ||
|
||
app.get('/full', (req, res) => { | ||
res.sendFile(path.join(__dirname, '/static/index.html')); | ||
}); | ||
|
||
app.get('/min', (req, res) => { | ||
res.sendFile(path.join(__dirname, '/static/index_min.html')); | ||
}); | ||
|
||
app.listen(PORT); | ||
console.log(`App listening on port ${PORT}`); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
{ | ||
"name": "appengine-uglifyjs", | ||
"description": "An example of minifying files with UglifyJS and Clean-CSS on Google App Engine.", | ||
"version": "0.0.1", | ||
"private": true, | ||
"license": "Apache Version 2.0", | ||
"author": "Google Inc.", | ||
"engines": { | ||
"node": "8.x" | ||
}, | ||
"scripts": { | ||
"start": "node ./index.js", | ||
"lint-css": "stylelint static/style.css", | ||
"lint-html": "htmlhint index.html", | ||
"lint-js": "semistandard index.js static/message.js", | ||
"lint": "npm run lint-css && npm run lint-html && npm run lint-js", | ||
"minify-css": "cleancss -o static/style.min.css static/style.css", | ||
"minify-js": "uglifyjs --compress --mangle -o static/message.min.js static/message.js", | ||
"gcp-build": "npm run minify-js && npm run minify-css" | ||
}, | ||
"dependencies": { | ||
"clean-css-cli": "^4.2.1", | ||
"express": "^4.16.3", | ||
"uglify-js": "^3.4.7" | ||
}, | ||
"devDependencies": { | ||
"htmlhint": "^0.9.13", | ||
"semistandard": "^12.0.1", | ||
"stylelint": "^9.4.0", | ||
"stylelint-config-recommended": "^2.1.0" | ||
}, | ||
"stylelint": { | ||
"extends": "stylelint-config-recommended" | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<!DOCTYPE html> | ||
|
||
<!-- | ||
Copyright 2018 Google LLC | ||
|
||
Licensed under the Apache License, Version 2.0 (the 'License'); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
|
||
http://www.apache.org/licenses/LICENSE-2.0 | ||
|
||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an 'AS IS' BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
--> | ||
|
||
<html> | ||
<head> | ||
<title>Simple web page</title> | ||
<script src="message.js" type="text/javascript"></script> | ||
<link rel="stylesheet" href="style.css"> | ||
</head> | ||
<body> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe add as a visible text to this page that this is loading unminified resources? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I feel like this should be obvious based on the different page URLs ( |
||
<button onclick="window.buttonClick()">Click me!</button> | ||
<br> | ||
<div id="message">You haven't clicked the button.</div> | ||
|
||
<!-- Error message --> | ||
<div id="cssError" style="font-size:40px; color:red">ERROR: CSS files not found!</div> | ||
</body> | ||
</html> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<!DOCTYPE html> | ||
|
||
<!-- | ||
Copyright 2018 Google LLC | ||
|
||
Licensed under the Apache License, Version 2.0 (the 'License'); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
|
||
http://www.apache.org/licenses/LICENSE-2.0 | ||
|
||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an 'AS IS' BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
--> | ||
|
||
<html> | ||
<head> | ||
<title>Simple web page</title> | ||
<script src="message.min.js" type="text/javascript"></script> | ||
<link rel="stylesheet" href="style.min.css"> | ||
</head> | ||
<body> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe add as a visible text to this page that this is loading minified resources. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ditto to below comment. |
||
<button onclick="window.buttonClick()">Click me!</button> | ||
<br> | ||
<div id="message">You haven't clicked the button.</div> | ||
|
||
<!-- Error message --> | ||
<div id="cssError" style="font-size:40px; color:red">ERROR: CSS files not found!</div> | ||
</body> | ||
</html> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
// Copyright 2018 Google LLC | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the 'License'); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an 'AS IS' BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
window.onload = function () { | ||
window.messageDiv = document.getElementById('message'); | ||
window.buttonClicks = 0; | ||
}; | ||
|
||
window.buttonClick = function () { | ||
window.buttonClicks++; | ||
|
||
var buttonClickTimes; | ||
if (window.buttonClicks === 1) { | ||
buttonClickTimes = 'once'; | ||
} else if (window.buttonClicks === 2) { | ||
buttonClickTimes = 'twice'; | ||
} else { | ||
buttonClickTimes = window.buttonClicks + ' times'; | ||
} | ||
|
||
window.messageDiv.innerHTML = 'You clicked the button ' + buttonClickTimes; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
/* | ||
Copyright 2018 Google LLC | ||
|
||
Licensed under the Apache License, Version 2.0 (the 'License'); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
|
||
http://www.apache.org/licenses/LICENSE-2.0 | ||
|
||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an 'AS IS' BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
*/ | ||
|
||
button { | ||
background-color: #2962ff; | ||
border-color: #0039cb; | ||
border-radius: 50%; | ||
border-width: 2px; | ||
width: 120px; | ||
height: 120px; | ||
color: #fefefe; | ||
font-size: 24px; | ||
font-family: Roboto, sans-serif; | ||
} | ||
|
||
#message { | ||
padding-top: 20px | ||
} | ||
|
||
body { | ||
padding: 20px; | ||
} | ||
|
||
#cssError { | ||
display: none; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove handlers, they are optional.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you push the commit?