Pragmatist
A collection of tasks to standardize builds.
Tasks
Tasks that are not documented (including dependencies of the documented tasks that are not documented) are considered private and can be changed/renamed or removed without a warning.
lint
- Uses Canonical to lint all
*.css
, *.scss
and *.js
files in ./src
and ./tests
directories.
format-css
- Uses csscomb to format all
*css
and *.scss
files in ./src
directory in accordance with Canonical requirements.
build
- Copies all files from
./src
directory to ./dist
. - Uses Babel to compile files in
./src
directory.
- Compiled files overwrite the existing files in
./dist
directory. - Source Maps are stored in the
./dist
directory`. - Uses
babel-plugin-lodash
. - Babel compiler is configured to use stage 0 ES features.
test
- Uses Babel to compile files in
./tests
directory. - Uses Istanbul to generate test coverage.
- Uses Mocha to execute tests in
./tests
directory.
Istanbul assumes that tests are using ./src
files (as opposed to ./dist
).
Istanbul coverage report is written to the ./coverage
directory. A coverage summary is included in the CLI output.
watch
Runs lint
, test
and build
tasks every time ./src/**/*.js
or ./tests/**/*.js
changes.
watch-lint
Runs lint
task every time ./src/**/*.js
or ./tests/**/*.js
changes.
watch-test
Runs test
task every time ./src/**/*.js
or ./tests/**/*.js
changes.
watch-build
Runs build
task every time ./src/**/*.js
or ./tests/**/*.js
changes.
Gulp Tasks
pragmatist
can be used to extend your existing gulp tasks.
import gulp from 'gulp';
import pragmatist from 'pragmatist';
pragmatist(gulp);
This will make all pragmatist
tasks available under pragmatist:
namespace, e.g.
gulp pragmatist:test
CLI Program
pragmatist
can be used as a CLI program to run all the tasks.
npm install pragmatist -g
Tasks can be executed by running:
pragmatist <task>
Just running pragmatist
will execute the test
task.
Multiple tasks can be executed one after the other, e.g.
pragmatist <task
Browser
The default behavior for build
task is to compile code for node
. Specifically, for the latest version of node
.
To compile code back to ES3, you must add --browser
flag to the command line, e.g.
pragmatist build --browser
Notifications
Use --notifications
flag to enable OS level notifications about errors that occur during the build.
pragmatist build --notifications
Types
Use --types
flag to enable https://github.com/codemix/babel-plugin-typecheck.
pragmatist build --types
NPM
A typical project using pragmatist
will define the following NPM scripts:
"scripts": {
"pragmatist": "node ./node_modules/.bin/pragmatist",
"lint": "npm run pragmatist lint",
"test": "npm run pragmatist test",
"build": "npm run pragmatist build",
"watch": "npm run pragmatist watch",
"watch-lint": "npm run pragmatist watch-lint",
"watch-test": "npm run pragmatist watch-test",
"watch-build": "npm run pragmatist watch-build"
},
Ignore Unnecessary Files
This is just a reminder. Pragmatist will produce several files that you do not want to commit to the repository or include in the npm bundle.
Add to .gitignore
:
node_modules
coverage
dist
*.log
.*
!.gitignore
!.npmignore
!.babelrc
!.travis.yml
Add to .npmignore
src
tests
coverage
.*
*.log