Built-in modules take the responsibility of maintaining dependencies and compatibility issues.
As we know, there is grunt and gulp for running some tasks to make your web project production-ready.
They also brought extra learning curve and maintenance cost for learning own configuration and packages with them.
This is where sey comes into play and offers alternative build system:
|Configuration Type||API and JSON||JSON||API|
|Platform targeting||node and web||Agnostic||Agnostic|
|No disk IO during tasks||✓|
|No maintainance cost||✓|
in other words, sey...
- has ability to target node.js projects as well as web browser projects,
- has built-in tasks, which does not need extra maintenance cost due to expiration of concepts and methods. all you need is updating to keep up to date,
- has declarative configuration which only needs the input of what user expect. say goodbye to planning directives such as copy, concat, etc.
- supports partial building on changed files. it never starts over doing all tasks.
- supports both configuration and API at the same time,
- is specialized for create bundles and building projects,
- is as fast as it can be.
- addheader: adds file header to each file
- commonjs: enables commonjs modules in browser
- concat: concatenates all content of source files
- eolfix: replaces various EOL types with unix standard
- lint: lints source files
- minify: minifies source files
- optimize: optimizes source files if available
- preprocess: proprocesses source files for macro support
- transpile: transpiles source files to adapt standards (ES6 -> ES5, etc.)
npm install -g sey
To create the seyfile in current directory:
To create the seyfile (with API-type configuration) in current directory:
sey init --api
To edit seyfile created:
vim seyfile.js (or open seyfile.js with your favorite text editor)
To build single bundle named 'main':
sey build main
To clean working directory:
Configuration (seyfile) Examples
let config =global:clean:before: './dist/*'after:main:target: 'node'standard: 2016eslint:quotes: 2 'single'eser: truebanner:'/**'' * my package'' */'''ops:src: './src/**/*.js' './src/**/*.ts' './src/**/*.jsx'dest: './dist/scripts/'addheader: truecompile: truecommonjs: name: 'browserified.js' entry: './index.js'eolfix: truelint: trueoptimize: truepreprocess: truetranspile: truesrc: './src/**/*.css' './src/**/*.less' './src/**/*.scss'dest: './dist/styles/'addheader: truecompile: trueconcat: 'style.css'eolfix: truelint: trueminify: trueoptimize: truepreprocess: truesrc: './test/*.js'test: true;sey;
let config = ;config;config;config;config;config;sey;
How sey works
sey is usually being started from command line. It simply loads its configuration named
seyfile.js and built-in modules first.
Loaded modules may delegate any "phase". Or, they can subscribe any internal event.
Depending on command line parameters, a "preset" will be executed.
- \ (presets) + lint - build (phases) + init + preprocess + lint - compile (operations) - compile (tasks) + babeljsx + less + sass + typescript + transpile + bundling + finalize + publish + test + server + deploy
Preset: A set of phases in execution order. For example
build executes init, preprocess, lint, compile, bundling and finalize "phase"s in a sequence.
Phase: Each step of delivery. Consists of "operation"s.
Operation: The delegation point of tasks. However configuration directives tell us which operation is asked, operation must correspond to a task to be executed.
To do so, the dominant (with higher weight point) task is elected depending on modules' claims.
Task: The class definition of the task.
- Deploy Task
- Watch Task (Refresh Friendliness)
- PostCSS Tasks (transpile op)
- Fancy output including line counts, lint and test results
See GitHub Issues.
- node.js (https://nodejs.org/)
Apache 2.0, for further details, please see LICENSE file
It is publicly open for any contribution. Bugfixes, new features and extra modules are welcome.