1.2.3 • Published 10 years ago

cost v1.2.3

Weekly downloads
4
License
MIT
Repository
github
Last release
10 years ago

cost

A CLI tool for checking the size of files after minifying and gzipping them. MIME types are checked to determine whether to minify and/or gzip the file. To mimic the behavior of most web servers, only CSS and JS files are minified, and the compressible module is used to determine whether to gzip a file or not.

Installation

$ sudo npm install -g cost

Usage

Basic usage:

$ cost /path/to/file.jpg
>> 640 kB

Multiple files:

$ cost /path/to/file.js ../path/to/other/file.png
>> /path/to/file.js
>> 640 kB (minified, gzipped)
>> ../path/to/other/file.png
>> 2.3 MB

Remote files:

$ cost https://mydomain.com/myfile.txt
>> 21 kB (gzipped)

Standard input:

$ echo hello world | cost
>> 12 B

Options

--help, -?        Display help information
--bytes, -b       Always display size in bytes (not kB, MB, etc.)
--simple, -s      Hide details about whether files were gzipped or minified
--raw, -r         Don't minify or gzip any files

Forcefully cause gzip/minify:

$ cost :css:/path/to/file
>> xxx kB (minified)

$ cost :gzip:/path/to/file
>> xxx kB (gzipped)

$ cost :js,gzip:/path/to/file
>> xxx kB (minified, gzipped)

Forcefully skip gzipping/minification:

$ cost :max:/path/to/file.js
>> xxx kB (gzipped)

$ cost :unzip:/path/to/file.js
>> xxx kB (minified)

$ cost :max,unzip:/path/to/file.js
>> xxx kB

You can do this with stdin too:

$ echo hello world | cost :js:
>> ERROR: Unexpected token: name (world)

These per-file options supercede the standard options. For example, the following operation will do minification, but not gzipping:

$ cost --raw :js:/path/to/file

Useful Information

When used on a local file, the file extension is used to determine the MIME type, which is used to decide whether to minify and/or gzip the file. When used on a remote file, the Content-Type header is checked to determine the MIME type, and the URL's file extension is used as a fallback.

This logic can be overwritten manually (see Options).

uglify-js is used for JavaScript minifcation, and clean-css is used for CSS minification.

The CSS minifiction does NOT follow @import directives.

Programmatic Usage

The main module uses promises (A+).

var cost = require('cost');

cost('/path/to/file.js')
	.then(function (result) {
		console.log(result.value + ' bytes');
		// >> 62 bytes
		
		if (result.gzip) {
			console.log('file was gzipped')
		}
		
		if (result.minify) {
			console.log('file was %s minified', result.minify);
			// >> file was js minified
		}
	})
	.catch(function (err) {
		console.log(err.message);
	});
	
	
cost({
	path: '/path/to/file.js',
	minify: false, // could be 'js', 'css', or false
	gzip: true
}).then(handleResult).catch(handleErrors);


// You can pass a string instead of a path.
// But when you do, minification and gzipping will not happen unless
// specified by you, because automatic MIME type detection cannot occur.
cost({
	value: myCssString,
	minify: 'css',
	gzip: true
}).then(handleResult).catch(handleErrors);

License

MIT License (https://github.com/JoshuaWise/cost/blob/master/LICENSE)

1.2.3

10 years ago

1.2.2

10 years ago

1.2.1

10 years ago

1.2.0

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.3.2

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.0

10 years ago

0.1.0

10 years ago