v5-unity
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
Note: I can't provide technical support for users who want to install Python Tutor on their own computers/servers. Read details here: https://github.com/pgbovine/OnlinePythonTutor/blob/master/unsupported-features.md --- Online Python Tutor v5 "unity" -- the goal for this version is to significantly clean up, modernize, and modularize the OPT codebase to ease future development. Specifically, this version of the codebase improves upon the older v3/ code by using TypeScript and refactoring the code for better modularity. To see how, compare the TypeScript files found here in js/ and the older messier JavaScript files in ../v3/js/ The main caveat, though, is that there's the extra complexity of a Webpack- and TypeScript-based compilation step. See these files for more info: - package.json <-- Node.js dependencies for npm - package-lock.json <-- see https://docs.npmjs.com/files/package-locks - webpack.config.js <-- Webpack configuration file (works on webpack versions under v4) Note that this directory (like v3/) contains only the web frontend code and the Python execution backend (mainly in pg_logger.py). For the backends that run *other* (i.e., non-Python) languages, see ../v4-cokapi/ --- After everything has been installed properly (see below): To start the Webpack automatic file watching and code compilation environment, run: npm run webpack To start the webserver, run: npm start then visit here to load an HTML page in your browser: http://localhost:8003/visualize.html To make a production (minified, cache-busted) build for deployment, run: npm run production-build (TODO: the --optimize-minimize doesn't seem to work right now; dunno why, ergh) --- This workflow was tested on 2017-02-11 with these versions of major tools: typescript 2.1.6 webpack 2.2.1 UPDATE: it was tested on 2018-05-26 with: $ webpack -v 3.11.0 $ tsc -v Version 2.8.3 ------ [instructions last updated on 2018-05-26 ... ergh these instructions get outdated so quickly since the npm ecosystem is so unstable and moves so fast ...] To get started, install: 1) Node.js / npm 2) Global npm dependency installs (run these commands in this directory): sudo npm install webpack@v3.11.0 -g # DON'T USE NEWER WEBPACK since it won't work with my webpack.config.js file, ergh sudo npm install webpack-dev-server -g sudo npm install -g typescript sudo npm install -g tsd 3) Run "npm install" in this directory to install node dependencies 4) Run "tsd install" in this directory to install TypeScript definition files [NB: no longer seems to work as of 2019-06-10] 5) do this near the end, i think npm link webpack # link to the local node_modules/ dir npm link typescript # link to the local node_modules/ dir 6) Install bottle.py to run the local webserver (I suppose we could use node too, but oh wells!) pip install bottle # maybe needed sudo see package.json for specific version dependencies, such as: "ts-loader": "^3.5.0", otherwise stuff doesn't play well together, eeeek dependency hell! ====== History: I started porting v3/ over to v5-unity/ on 2016-06-12 since the headache of manually maintaining so many JS/CSS files and their intricate dependencies was starting to get out of hand ... i've waited for years to port to a more sustainable and modern development setup ... I decided to go with Webpack for the module system and to upgrade the appropriate versions of libraries to match, without breaking crufty legacy code (hopefully) ====== Older (possibly-outdated) notes from mid-2016: Requires these global installations: - Node.js / npm - webpack: http://webpack.github.io/ and webpack-dev-server sudo npm install webpack -g sudo npm install webpack-dev-server -g [you might need to install webpack locally (without the -g) ... weird] If you run: webpack-dev-server --progress --colors then your code will automatically recompile and be refreshed here: http://localhost:8080/webpack-dev-server/visualize.html (but this is kinda flaky, ugh) Instead, use this to continually compile: webpack --watch and run the server with Bottle: python bottle_server.py --- Ported the code base over to TypeScript for enhanced static checking For developing using TypeScript: sudo npm install -g typescript # install globally npm link typescript # link to the local node_modules/ dir npm install tsd -g # tsd type definitions manager tsd install require --save tsd install jQuery --save tsd install jquery.bbq --save tsd install ace --save tsd install qtip2 --save tsd install jqueryui --save tsd install d3 --save tsd install diff-match-patch --save tsd install jquery.simplemodal --save (then in the future, simply run 'tsd install' to install definition modules saved in tsd.json) Currently using: Version 1.8.10