Package Exports
- rc-config-loader
- rc-config-loader/lib/rc-config-loader.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rc-config-loader) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
rc-config-loader 
Load config from .{product}rc.{json,yml,js}
file.
It is a Node.js library for loading .textlintrc
, .eslintrc
, .stylelintrc
etc...
Features
Find and load a configuration object from:
- a
package.json
property if it is needed - a JSON or YAML, JS "rc file"
.<product>rc
or.<product>rc.json
or.<product>rc.js
or.<product>rc.yml
,.<product>rc.yaml
- TypeScript support
- Includes
.d.ts
- Includes
Difference
with MoOx/rc-loader
- Safe API
rc
contains shabang in.js
file
- Enhance Error message
with cosmiconfig
Sync loading- cosmiconfig@3+ support
sync
option
- cosmiconfig@3+ support
Built-in TypeScript support- comisconfig@6* is written by TypeScript
If you want to async support and customize loader, recommended to use cosmiconfig.
Install
Install with npm:
npm install rc-config-loader
Usage
API
export interface rcConfigLoaderOption {
// does look for `package.json`
packageJSON?:
| boolean
| {
fieldName: string;
};
// if config file name is not same with packageName, set the name
configFileName?: string;
// treat default(no ext file) as some extension
defaultExtension?: string | string[];
// where start to load
cwd?: string;
}
/**
* Find and load rcfile, return { config, filePath }
* If not found any rcfile, throw an Error.
* @param {string} pkgName
* @param {rcConfigLoaderOption} [opts]
* @returns {{ config: Object, filePath:string } | undefined}
*/
export declare function rcFile<R extends {}>(pkgName: string, opts?: rcConfigLoaderOption): {
config: R;
filePath: string;
} | undefined;
rcFile
return { config, filePath }
object.
config
: it is config objectfilePath
: absolute path to config file
Note:
rcFile
function returnundefined
if the config file is not foundrcFile
throw an Error if the config file content is malformed (causing a parsing error)
Recommenced usage:
import { rcFile } from "rc-config-loader"
function loadRcFile(rcFileName){
try {
const results = rcFile(rcFileName);
// Not Found
if (!results) {
return {};
}
return results.config;
} catch (error) {
// Found it, but it is parsing error
return {} ; // default value
}
}
// load config
const config = loadRcFile("your-application");
console.log(config); // => rcfile content
It will check these files and return config file if found it.
.your-applicationrc.json
.your-applicationrc.yml
.your-applicationrc.yaml
.your-applicationrc.js
- [optional]
package.json
- if
packageJSON
option is enabled
- if
Example
import { rcFile } from "rc-config-loader"
// load .eslintrc from current dir
console.log(rcFile("eslint"));
// load .eslintrc from specific path
console.log(rcFile("eslint", {
configFileName: `${__dirname}/test/fixtures/.eslintrc`
}));
/*
config: { extends: 'standard',
rules:
{ 'comma-dangle': [ 2, 'always-multiline' ],
'arrow-parens': [ 2, 'as-needed' ] } }
filePath: ${__dirname}/test/fixtures/.eslintrc
*/
// load property from package.json
console.log(rcFile("rc-config-loader", {
packageJSON: {
fieldName: "directories"
}
}));
/*
config: { test: 'test' }
filePath: /path/to/package.json
*/
// load .eslintrc from specific dir
console.log(rcFile("eslint", {
cwd: `${__dirname}/test/fixtures`
}));
// load specific filename from current dir
console.log(rcFile("travis", {configFileName: ".travis"}));
/*
config: { sudo: false, language: 'node_js', node_js: 'stable' }
filePath: /path/to/.travis
*/
// try to load as .json, .yml, js
console.log(rcFile("bar", {
configFileName: `${__dirname}/test/fixtures/.barrc`,
defaultExtension: [".json", ".yml", ".js"]
}));
// try to load as foobar, but .foobarrc is not found
console.log(rcFile("foorbar")); // => undefined
// try to load as .json, but it is not json
// throw SyntaxError
try {
rcFile("unknown", {
// This is not json
configFileName: `${__dirname}/test/fixtures/.unknownrc`,
defaultExtension: ".json"
})
} catch (error) {
console.log(error);
/*
SyntaxError: Cannot read config file: /test/fixtures/.unknownrc
*/
}
Users
Changelog
See Releases page.
Running tests
Install devDependencies and Run npm test
:
npm i -d && npm test
Contributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Author
License
MIT © azu
Acknowledgement
Difference
- support multiple
defaultExtension