Created
November 7, 2017 04:42
-
-
Save robertfairley/2233f434cc19d0c3fd34f111db25a059 to your computer and use it in GitHub Desktop.
Revisions
-
robertfairley created this gist
Nov 7, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,169 @@ #!/usr/bin/env python import sys import subprocess # GLOBALS PROMPT = "[ ES5 INIT ]" TITLE = "" CSS = "" TEMPLATE = { "html": """ <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, user-scalable=0, initial-scale=1.0" /> <title>%s</title> %s </head> <body> <main id="root" role="main"></main> <script src="app.js"></script> </body> </html> """ % (TITLE, CSS), "css": """ <style> html,body { margin: 0; padding: 0; font-family: -apple-system, "Gill Sans", "Helvetica Neue", "Helvetica", "Verdana", sans-serif; } button { appearance: none; box-sizing: border-box; } button:focus { outline: 0; border: 1px solid blue; } </style> """, "javascript": """ const el = { main: document.querySelector('#root'), }; el.main.innerHTML = ` <h1>ES5/6 App - Browser Friendly!</h1> <p>This is your new ES5 app compiled with webpack or rollup if you want!</p> ` """, "webpack": """ module.exports = { entry: './src/index.js', output: { filename: 'app.js', path: __dirname }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ } ] } }; """, "rollup": """ import resolve from 'rollup-plugin-node-resolve' export default { entry: './src/index.js', dest: 'app.js', format: 'iife', plugins: [ resolve({ module: true, browser: true }) ] } """, "package_json": """ { "name": "", "version": "0.0.1", "description": "[ fill this in ]", "main": "app.js", "scripts": { "build:wp": "webpack --progress", "build:rp": "rollup -c", "watch:wp": "webpack --progress --watch", "watch:rp": "rollup -c -w", "start": "serve -p 6060" }, "devDependencies": { "rollup-plugin-node-resolve": "latest", "rollup": "latest", "webpack": "latest", "babel-core": "latest", "babel-loader": "latest" } } """ } def log(msg = None, file_name = None): if (msg == None): print ("%s File written: `%s`" % (PROMPT, file_name)) elif (file_name == None): print ("%s %s" % (PROMPT, msg)) else: print("%s %s: %s" % (PROMPT, msg, file_name)) def setup_modules(): subprocess.call(["npm", "install"]) def setup_npm(): filename = "package.json" with open(filename, "w+") as fin: fin.write(TEMPLATE["package_json"]) log(None, filename) setup_modules() def setup_webpack(): filename = "webpack.config.js" with open(filename, "w+") as fin: fin.write(TEMPLATE["webpack"]) log(None, filename) def setup_rollup(): filename = "rollup.config.js" with open(filename, "w+") as fin: fin.write(TEMPLATE["rollup"]) log(None, filename) def setup_html(): filename = "index.html" with open(filename, "w+") as fin: CSS = TEMPLATE["css"] fin.write(TEMPLATE["html"]) log(None, filename) def setup_javascript(): subprocess.call(["mkdir", "src"]) filename = "./src/index.js" with open(filename, "w+") as fin: fin.write(TEMPLATE["javascript"]) log(None, filename) def main(): TITLE = raw_input("Enter a title for your application:\n>>> ") if TITLE == None: TITLE = "Blank App" setup_npm() setup_modules() setup_webpack() setup_rollup() setup_html() setup_javascript() print ("%s Done!" % PROMPT) if __name__ == "__main__": main()