다른 작업을 진행하다가 정말로 오랜만에 다시 Node.js 관련 오픈 소스 분석 작업을 하는데 참조하고 있는 패키지들이 많기도 하다. 아는 것보다는 모르는 것이 더 많아서 뭐가 뭔지 하나도 모르겠다.
앞으로 작업을 하면서 좀 더 다양한 패키지들을 자세하게 알아야 하지만, 당장은 제목과 기능이라도 알아야 이해를 할 수 있을 듯 하다. ㅠㅠ
Packages for NodeJS
bluebird
Full featured promise library with unmatched performance
Examples
설치
npm install bluebird
활용법
var Promise = require("bluebird");
References
bunyan
Simple and fast JSON Logging Module for node.js services
Examples
설치
$ npm install bunyan
활용법
var bunyan = require('bunyan'); var log = bunyan.createLogger({name: "myapp"}); log.info("hi");
References
camelcase
Convert a dash/dot/underscore/space separated string to camelCase: foo-bar -> fooBar
Examples
설치
$ npm install --save camelcase
활용법
const camelCase = require('camelcase');
camelCase(‘foo-bar’); //=> ‘fooBar’ camelCase(‘foo_bar’); //=> ‘fooBar’ camelCase(‘Foo-Bar’); //=> ‘fooBar’ camelCase(’–foo.bar’); //=> ‘fooBar’ camelCase(‘foo__bar’); //=> ‘fooBar’ camelCase(‘foo bar’); //=> ‘fooBar’ camelCase(‘foo’, ‘bar’); //=> ‘fooBar’ camelCase(‘foo’, ‘–bar’); //=> ‘fooBar’
console.log(process.argv[3]); //=> ‘–foo-bar’ camelCase(process.argv[3]); //=> ‘fooBar’
References
chai
BDD (Behavior-Driven Development) / TDD (Test-Driven Development) Assersion Library for Node
Examples
설치
$ npm install bunyan
활용법
// Should chai.should();
foo.should.be.a(‘string’); foo.should.equal(‘bar’); foo.should.have.lengthOf(3); tea.should.have.property(‘flavors’).with.lengthOf(3);
// Expect var expect = chai.expect;
expect(foo).to.be.a(‘string’); expect(foo).to.equal(‘bar’); expect(foo).to.have.lengthOf(3); expect(tea).to.have.property(‘flavors’).with.lengthOf(3);
// Assert var assert = chai.assert;
assert.typeOf(foo, ‘string’); assert.equal(foo, ‘bar’); assert.lengthOf(foo, 3) assert.property(tea, ‘flavors’); assert.lengthOf(tea.flavors, 3);
References
chalk
Terminal String Styling done right
Examples
설치
$ npm install chalk
활용법
const chalk = require('chalk'); console.log(chalk.blue('Hello world!'));
References
chokidar
A neat wrapper around node.js fs.watch / fs.watchFile / fsevents.
Examples
설치
$ npm install chokidar --save
활용법
var chokidar = require('chokidar');
// One-liner for current directory, ignores .dotfiles chokidar.watch(’.’, {ignored: /(^|[/\])…/}).on(‘all’, (event, path) => { console.log(event, path); }); // Example of a more typical implementation structure:
// Initialize watcher. var watcher = chokidar.watch(‘file, dir, glob, or array’, { ignored: /(^|[/\])…/, persistent: true });
// Something to use when events are received. var log = console.log.bind(console); // Add event listeners. watcher .on(‘add’, path => log(
File ${path} has been added
)) .on(‘change’, path => log(File ${path} has been changed
)) .on(‘unlink’, path => log(File ${path} has been removed
));// More possible events. watcher .on(‘addDir’, path => log(
Directory ${path} has been added
)) .on(‘unlinkDir’, path => log(Directory ${path} has been removed
)) .on(‘error’, error => log(Watcher error: ${error}
)) .on(‘ready’, () => log(‘Initial scan complete. Ready for changes’)) .on(‘raw’, (event, path, details) => { log(‘Raw event info:’, event, path, details); });// ‘add’, ‘addDir’ and ‘change’ events also receive stat() results as second // argument when available: http://nodejs.org/api/fs.html#fs_class_fs_stats watcher.on(‘change’, (path, stats) => { if (stats) console.log(
File ${path} changed size to ${stats.size}
); });// Watch new files. watcher.add(‘new-file’); watcher.add([‘new-file-2’, ‘new-file-3’, ‘**/other-file*’]);
// Get list of actual paths being watched on the filesystem var watchedPaths = watcher.getWatched();
// Un-watch some files. watcher.unwatch(‘new-file*’);
// Stop watching. watcher.close();
// Full list of options. See below for descriptions. (do not use this example) chokidar.watch(‘file’, { persistent: true,
ignored: ‘*.txt’, ignoreInitial: false, followSymlinks: true, cwd: ‘.’,
usePolling: true, interval: 100, binaryInterval: 300, alwaysStat: false, depth: 99, awaitWriteFinish: { stabilityThreshold: 2000, pollInterval: 100 },
ignorePermissionErrors: false, atomic: true // or a custom ‘atomicity delay’, in milliseconds (default 100) });
References
escape-string-regexp
Escape RegExp Special Characters
Examples
설치
$ npm install --save escape-string-regexp
활용법
const escapeStringRegexp = require('escape-string-regexp');
const escapedString = escapeStringRegexp(‘how much $ for a unicorn?’); //=> ‘how much $ for a unicorn?’
new RegExp(escapedString);
References
eslint
Pluggable Linting utility for JavaScript and JSX
Examples
설치
$ npm install eslint
활용법
Rule 정의 파일 구성 $ npm run eslint .
References
graceful-fs
drop-in replacement for the fs module, making various improvements.
Examples
설치
$ npm install graceful-fs
활용법
// use just like fs var fs = require('graceful-fs')
// now go and do stuff with it… fs.readFileSync(‘some-file-or-whatever’)
// // Global Patching //
// Make sure to read the caveat below. var realFs = require(‘fs’) var gracefulFs = require(‘graceful-fs’) gracefulFs.gracefulify(realFs)
References
istanbul
JS Code Coverage tool written in JS
Examples
설치
$ npm install -g istanbul
활용법
$ istanbul cover test.js
References
jscs
Javascript Code Style Checker
Examples
설치
$ npm install jscs
활용법
$ jscs file.js --preset=airbnb
References
minimist
guts of optimist's argument parser without all the fanciful decoration
Examples
설치
$ npm install minimist
활용법
var argv = require('minimist')(process.argv.slice(2)); console.dir(argv);
References
mocha
Fun, Simple, Flexible Javascript Test Framework
Examples
설치
$ npm install mocha
활용법
Assert 파일 작성 $ mocha test/index.js
References
nyc
Istanbul command line interface
Examples
설치
$ npm i nyc --save-dev
활용법
package.json script 설정
{ "script": { "test": "nyc tap ./test/*.js" } }
실행
$ nyc npm test $ nyc --reporter=lcov --reporter=text-lcov npm test
References
require-dir
Node.js 지원을 위해 지정한 디렉터리 단위로 존재하는 파일들을 일괄 require() 처리
Examples
설치
$ npm install require-dir
활용법
var requireDir = require('require-dir'); var dir = requireDir('./path/to/dir'); var dir = requireDir('./path/to/dir', {recurse: true});
References
rewire
Easy monkey-patching for node.js unit tests
Examples
설치
$ npm install rewire
활용법
자세한 활용법은 아래 사이트 설명 참조
References
shelljs, shelljs/shx
shelljs: Portable Unix shell commands for Node.js
shelljs/shx: Portable Shell Commands for Node.js
Examples
설치
$ npm install shelljs $ npm install shelljs/shx # for command line
활용법 (shelljs)
var shell = require('shelljs');
if (!shell.which(‘git’)) { shell.echo(‘Sorry, this script requires git’); shell.exit(1); }
// Copy files to release dir shell.rm(’-rf’, ‘out/Release’); shell.cp(’-R’, ‘stuff/’, ‘out/Release’);
// Replace macros in each .js file shell.cd(‘lib’); shell.ls(’*.js’).forEach(function (file) { shell.sed(’-i’, ‘BUILD_VERSION’, ‘v0.1.2’, file); shell.sed(’-i’, /^.REMOVE_THIS_LINE.$/, ‘’, file); shell.sed(’-i’, /.REPLACE_LINE_WITH_MACRO.\n/, shell.cat(‘macro.js’), file); }); shell.cd(’…’);
// Run external tool synchronously if (shell.exec(‘git commit -am “Auto-commit”’).code !== 0) { shell.echo(‘Error: Git commit failed’); shell.exit(1); }
활용법 (shelljs/shx)
# used in command line using shx $ shx mkdir -p foo $ shx touch foo/bar.txt $ shx rm -rf foo
References
sinon
Standalone test spies, stubs and mocks for Javascript. work with any unit testing framework.
Examples
설치
$ npm install sinon
활용법
자세한 활용법은 아래 사이트 설명 참조
References
standard
Javascript 표준 스타일 가이드 with Linter & Automatic code fixer
Examples
설치
$ npm install standard --save-dev
활용법
$ standard Error: Use JavaScript Standard Style lib/torrent.js:950:11: Expected '===' and instead saw '=='. $ standard "src/util/**/*.js" "test/**/*.js"
References
tildify
Convert an absolute path to the tilde path: /Users/sindresorhus/dev to ~/dev
Examples
설치
$ npm install --save tildify
활용법
const tildify = require('tildify');
tildify(’/Users/sindresorhus/dev’); //=> ‘~/dev’
References
yargs
Yargs helps you build interactive command line tools by parsing arguments and generating an elegant user interface
Examples
설치
$ npm install yargs
활용법
#!/usr/bin/env node
require(‘yargs’) .usage(’$0
[args]’) .command(‘hello [name]’, ‘welcome ter yargs!’, { name: { default: ‘default name’ } }, function (argv) { console.log(‘hello’, argv.name, ‘welcome to yargs!’) }) .help() .argv 자세한 활용법은 아래 사이트 설명 참조
References
Written by Morris (ccambo@gmail.com - MSFL)
댓글
댓글 쓰기