cjoiner is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
cjoiner is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with cjoiner. If not, see http://www.gnu.org/licenses/.
cjoiner
Join css, js or other text files and create a versioned file. It also supports compression.
For now cjoiner
is designed to work with javascript using sprockets v.1.0.2 and css using sass, also you can join files using a yaml
to define sources.
Author
Alejandro El Informático
Installation
$ [sudo] gem install cjoiner
Usage
As CLI tool
cjoiner
will use pwd
as a primary path and will look for config.yaml
file if no config_file
is passed as argument.
$ cjoiner [config_file]
As a library
require 'cjoiner'
Using an object:
cjoiner = Cjoiner::Joiner.new data
cjoiner.proccess!
Using the yaml
file:
cjoiner = Cjoiner::Joiner.new
cjoiner.load_config! 'config.yaml'
cjoiner.proccess!
Configuration file
This is the skeleton for the configuration file or the data object:
config.yaml
config
: configuration wrappercompress
: boolean set compression for all filesyui
: string the yui-compressor java file to use if wantedmunge
: boolean short the variable names for js filescharset
: string set the charsetdebug
: boolean save a file without compression, just all the concatenationdebug_suffix
: string suffix for thedebug
file, usuallyname.debug.extension
common_dependencies
: array general dependencies arraycommon_path
: string common path for all itemscommon_output
: string common output path for all files- undebugjs : boolean remove console statements
- undebugjs_prefix : string set the console prefix
files
: define filesfile
: string path and name for file (assumingcommon_path
as root) to process, ex:javascripts/all.js
name
: string output nameextension
: string output extensiontype
: string file type,sass
,js
oryaml
, this is optional ascjoiner
can guess by the extension- undebugjs : boolean remove console statements per file configuration
major
: int major releaseminor
: int minor releasebugfix
: int bugfix numbercompilation
: int compilation numbercompress
: boolean set compresion for this file, overrides general compression flagdebug
: boolean set debug for this file, overrides general debug flagdependencies
: array custom dependencies array for this fileoutput
: string file output assumingcommon_output
as root
Remove console statements
This option must be activated globally or per-file configuration and only works for uncompressed files. This engine is basically a simple regex that remove all those lines matching console statements.
Also, you can set your own console prefix. for example:
undebugjs_prefix : APP
will remove APP.log([...])
, APP.warn([...])
...
Join text files
Set file type to yaml
and define sources in another yaml
file:
files:
- file-1.extension
- file-2.extension
- file-3.extension
Example
$ cjoiner project.yaml
### project.yaml
config :
common_path : /work/project/
common_output : /work/project/output/
undebugjs : true
debug : true
common_dependencies : [
javascripts/src/,
javascripts/src/core/,
javascripts/src/lib/,
sass/
]
files:
javascripts/all.js :
name : all
extension : js
major : 1
minor : 0
bugfix : 0
compilation : 0
output : /javascripts/
sass/css.sass :
type : sass
name : css
extension : css
major : 0
minor : 0
bugfix : 0
compilation : 1
output : /stylesheets/
other.yaml :
name : files
extension : output
major : 1
minor : 1
bugfix : 1
compilation : 1
### all.js (sprockets file)
//= require "lib.js"
//= require "debug.js"
//= require "vendor/plugin.js"
### css.sass (sass file)
@import defines
@import mixins
@import general
### other.yaml (other files)
files:
- file-1.extension
- file-2.extension
- file-3.extension
Will generate two compressed files and two debug files for javascript and sass files, and other file for the other files:
/work/project/output/javascripts/all.1.0.0.0.js
/work/project/output/javascripts/all.debug.js
/work/project/output/stylesheets/css.1.0.0.0.js
/work/project/output/stylesheets/css.debug.js
/work/project/output/files.1.1.1.1.output
Requirements
- ruby 1.8.7, 1.9.3
- rubygems > 1.3.7
- gems
- sprockets 1.0.2
- yui-compressor > 0.9.6
- sass > 3.1.4
TODO
- Create tests