{"id":20617,"library":"tower-of-babel","title":"Tower of Babel","description":"A Node.js workshopper tutorial that teaches ES6 features through interactive exercises. Version 1.0.0 (last release circa 2015) is stable and uses Babel 6 with the es2015 preset. It is designed for offline command-line learning, with each exercise requiring the user to write code that passes a test. Differentiators: focuses exclusively on ES6 transpilation with Babel, as opposed to general ES6 tutorials. No longer actively maintained; superseded by modern environments with native ES6 support.","status":"deprecated","version":"1.0.0","language":"javascript","source_language":"en","source_url":"git://github.com/yosuke-furukawa/tower-of-babel","tags":["javascript","es6","babel","learn","tutorial","workshopper"],"install":[{"cmd":"npm install tower-of-babel","lang":"bash","label":"npm"},{"cmd":"yarn add tower-of-babel","lang":"bash","label":"yarn"},{"cmd":"pnpm add tower-of-babel","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required to transpile ES6 code in exercises","package":"babel-cli","optional":false},{"reason":"Preset needed for ES6 transpilation","package":"babel-preset-es2015","optional":false}],"imports":[{"note":"ES6 import syntax is used throughout the exercises.","wrong":"const fs = require('fs');","symbol":"Default import pattern","correct":"import fs from 'fs';"},{"note":"ES6 named imports are encouraged.","wrong":"const readFile = require('fs').readFile;","symbol":"Named import pattern","correct":"import { readFile } from 'fs';"},{"note":"Arrow functions are a key ES6 feature taught.","wrong":"function add(a, b) { return a + b; }","symbol":"Arrow function","correct":"const add = (a, b) => a + b;"}],"quickstart":{"code":"mkdir tower-of-babel-solutions && cd tower-of-babel-solutions && npm init -y && npm i tower-of-babel && npm i babel-cli babel-preset-es2015 && echo '{ \"presets\": [\"es2015\"] }' > .babelrc && ./node_modules/tower-of-babel/tower-of-babel.js","lang":"javascript","description":"Sets up a new project with ESLint, Babel, and starts the Tower of Babel tutorial."},"warnings":[{"fix":"Consider using native ES6 or a modern tutorial.","message":"Tower of Babel uses Babel 6 and is no longer maintained. Modern environments support ES6 natively.","severity":"deprecated","affected_versions":"*"},{"fix":"Use an older Node.js version (e.g., 4.x) or Docker to run the tutorial.","message":"Requires Node.js version 4 or lower. May fail on newer Node versions due to changes in module resolution.","severity":"getting error","affected_versions":">=10.0.0"},{"fix":"For Babel 7, install @babel/cli, @babel/preset-env and set { \"presets\": [\"@babel/preset-env\"] } in .babelrc.","message":"The .babelrc file must have presets set to es2015 for Babel 6. Babel 7 uses @babel/preset-env.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Run 'npm install babel-preset-es2015' inside the project directory.","cause":"The required babel-preset-es2015 is not installed.","error":"Error: Cannot find module 'babel-preset-es2015'"},{"fix":"Ensure tower-of-babel is in node_modules: run 'npm install tower-of-babel' from the project root.","cause":"The tower-of-babel package is not installed or the path is incorrect.","error":"sh: ./node_modules/.bin/tower-of-babel: No such file or directory"},{"fix":"Use Node.js version 4.x or upgrade to Babel 7 with a compatible Node version.","cause":"Babel is not compatible with the installed Node.js version.","error":"Error: Module version mismatch. Expected 50, got 48."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}