💥 Careful: This package is no longer maintained and is only here for historic reasons. This means you should very likely not use it. You have been warned. 💥
Get started with modern JavaScript development as simple as the ABC
- Next generation JavaScript language syntax
- Unit tests with code coverage of your original code
- Linting for consistent style
- Continuous integration
This module only works with Node v6+ and npm v3+ (or yarn), which are the current LTS versions. Please make sure you are running the right versions via
node -v && npm -v
and update if needed.
# Install the module
npm install --save-dev abc-environment
# Run the setup
node_modules/.bin/abc setup
# Now you can commit...
git add ...
git commit ...
# ...and run commands directly
node_modules/.bin/abc test
npm test
# Tip: Create an alias for "abc" to have an even shorter command
echo "alias abc='node_modules/.bin/abc'" >> ~/.bashrc && source ~/.bashrc
abc test
Creates the directories and files for the whole project to run. This will modify files, so only run it on empty or version-controlled projects.
setup
command again to get the newest files! When updating to the next major number, running setup
is required.
The created directories and files are:
-
src/
- Directory for your source code -
src/index.js
- Demo module file (ifsrc/
is empty) -
tests/
- Directory for your tests -
tests/index.spec.js
- Demo test file (iftests/
is empty) -
.babelrc
- Manages the Babel configuration throughout the whole project 1 -
.gitignore
- Makes sure that you don't commit dependency files into version control -
.npmignore
- Makes sure that you only release the built files into npm -
.travis.yml
- Handles continuous integration with Travis -
package.json
- Adds three npm scripts:-
npm test
- Runs thetest
andlint
commands -
npm run build
- Runs thebuild
command -
npm run version
- Runs thebuild
command when you publish a new version of your package to npm (e.g. usingnp
ornpm-release
)
-
Compiles the source files from src/
into a build/
directory. Thanks to this, you can use the latest language features of JavaScript and compile them into JavaScript that runs in older browsers or older versions of Node. You can find an overview of all the new language features here and here.
Runs the test files in the tests/
directory. Using unit tests, you can check if your module always works in the way you expect it to. You can also see which parts of your code are covered by your tests by opening the generated coverage/lcov-report/index.html
in your browser.
Checks if your code is consistent and follows best practices (and optionally fix issues). By using a linter you can ensure that all your code looks the same, even if it was written by different developers. Linting also helps to catch common errors. This module uses the standard style guide.
Runs a specified file. Because we are using compiled code, it can get tedious if you have to run build
before you can run your code. Using the run
command, you can just specify the file and get it compiled and executed in one single step. This is used for development purposes, in production you should always use the compiled files generated using the build
command!
-
Compiling
-
babel-cli
- Compiler for writing next generation JavaScript -
babel-preset-latest
- Compiling everything what's in ES2015+ -
babel-preset-stage-0
- Compiling up-and-coming language features
-
-
Testing
-
mocha
- Simple & flexible test framework -
chai
- BDD / TDD assertion framework -
sinon
- Test spies and stubs -
nyc
- Code coverage tool -
babel-plugin-istanbul
- Instruments your code with Istanbul coverage -
babel-plugin-rewire
- Adds the ability to rewire module dependencies
-
-
Linting
-
snazzy
- One JavaScript Style Guide to Rule Them All -
babel-eslint
- Lint all valid Babel code, includingstage-0
-
-
Continuous Integration (optional, but recommended)
- Travis - Continuous integration service
-
codecov
- Code coverage badges in your repository - GreenKeeper - Automatic PRs for npm dependencies
-
np
- A betternpm publish
MIT
[1]: Sadly this is required, because Mocha provides no way to configure Babel