UNPKG

noda

Version:

NOde Developing Assistant

138 lines (98 loc) 4.99 kB
# noda __NOde Developing Assistant__ __noda__ is a very lower-level package which will help you easily accessing files and directories in your package or adjacent to your Node.js file. ## Table of contents * [Get Started](#get-started) * [API](#api) * [Examples](#examples) ## Links * [CHANGE LOG](./CHANGELOG.md) * [Homepage](https://github.com/YounGoat/noda) ## Get Started ```javascript const noda = require('noda'); const foo = noda.inRequire('util/foo'); // require <homedir>/util/foo.js // Here <homedir> is home directory of current node.js package(module). const bar = noda.osRequire('./foo/bar'); // require ./foo/bar/<platform>.js // Here platform equals to the returned value of os.platform(). const lib = noda.requireDir('./lib'); // require all sub modules in ./lib and return a hash object ``` ## API Before read APIs, please understand that 1. The phrase "current package" refers to the NPM package which contains the nodejs file where code `noda.*` located. 1. Parameter `subpath` refers to pathname relative to the basepath of "current package". 1. Because all functions are synchronous, postfix `Sync` is omitted. 1. For functions with name prefixed with preposition *in*, the scope is "current package". E.g. `noda.inRead()` will read a file in current package. 1. For functions with name prefixed with preposition *next*, *up* and *down*, the scope is "current file". E.g. `noda.nextRead()` will read a file adjacent to current file. * __noda.bindings__(string *name*) Require an addon.node. This method is allowed to be required as `noda/bindings`. * __noda.packageOf__(string *id*, Object *module*) Return the object parsed from package.json which belongs to the special package named *id* according to the view angle of special *module*. * __noda.currentPackage__() Return the object parsed from package.json which belongs to current package. * __noda.once__(Function *action*) Run specified function immediately when the code is first time reached. * __noda.inExists__(string *subpath*, boolean *resolveAsModule*) Judge whether file or directory exists. If __resolveAsModule__ set `true`, __subpath__ will be tentatively regarded as JS/JSON module path in the current package when the exact file not exists. This method is __synchronuous__. * __noda.inRead__(string *subpath* [, string *encoding*, boolean *nullIfNotFound* ]) Read content of file. * __noda.inReaddir__(string *subpath*) Read the contents of a directory. * __noda.inRequire__(string *subpath*) Require js or json. * __noda.inRequireDir__(string *dirname*, Array | string *ignores*) Based on requireDir(), but the dirname is regarded as relative path to home directory of the package in which the caller is located. __ignores__ includes those that SHOULD NOT be required. If `'*/'` contained in __ignores__, all sub directories will not be required whether or not *index.js* exists in the sub directories. If `'*'` contained in __ignores__, all .js files will not be required. * __noda.inResolve__(string *subpath*) Resolve the subpath into an absolute path. * __noda.nextRead__(string *subpath* [, string *encoding*, boolean *nullIfNotFound* ]) Read content of file. * __noda.osRequire__(string *dirname*) Require module whose name is same with the name of current platform. Relative __dirname__ is acceptable. * __noda.requireDir__(string *dirname*, Array | string *ignores*) Read the directory and require all javascript modules except those excluded, and returned them in an object with keys equal to modules' name. Relative __dirname__ is acceptable. ATTENTION:__Directory "node_modules" is always ignored whether or not it is explictly added in `ignores`.__ * __noda.upResolve__(string *pathname*) Find sub-directory or file in ascent directory and return the full path. * __noda.downResolve__(string *pathname* [, number *depth*, string *order* ]) Find sub-directory or file in descent directory and return the full path. The value of *order* may be `DFS` (means depth-first search) or `BFS` (means breadth-first search). * __noda.existsInPackage__ Alias of `noda.inExists`. * __noda.readInPackage__ Alias of `noda.inRead`. * __noda.requireInPackage__ Alias of `noda.inRequire`. * __noda.requireDirInPackage__ Alias of `noda.inRequireDir`. * __noda.resolveInPackage__ Alias of `noda.inResolve`. ## Examples Suppose that there is an NPM package named *ching*: ```code + ching + bin + command + lib + node_modules + util . CHANGELOG.md . conf.js . index.js . package.json . README.md ``` Let's see what __noda__ can do. ```javascript // FILE: ching/command/init/index.js const noda = require('noda'); // Read ching/package.json and return the parsed JSON object. noda.currentPackage(); // Require ching/util/rc.js and return. noda.inRequire('util/rc'); ```