sxy-filing-cabinet
v3.4.2
Published
Find files based on partial paths
Downloads
18
Maintainers
Readme
filing-cabinet
Get the file associated with a dependency/partial's path
npm install --save filing-cabinet
Usage
var cabinet = require("filing-cabinet");
var result = cabinet({
partial: "somePartialPath",
directory: "path/to/all/files",
filename: "path/to/parent/file",
ast: {}, // an optional AST representation of `filename`
// Only for JavaScript files
config: "path/to/requirejs/config",
webpackConfig: "path/to/webpack/config",
nodeModulesConfig: {
entry: "module",
},
tsConfig: "path/to/tsconfig.json" // or an object
tsConfigPath: "path/to/tsconfig.json",
});
console.log(result); // /absolute/path/to/somePartialPath
partial
: the dependency path- This could be in any of the registered languages
directory
: the path to all filesfilename
: the path to the file containing thepartial
ast
: (optional) the parsed AST forfilename
.- Useful optimization for avoiding a parse of filename
config
: (optional) requirejs config for resolving aliased JavaScript moduleswebpackConfig
: (optional) webpack config for resolving aliased JavaScript modules. If exporting multiple configurations, the first configuration is used.nodeModulesConfig
: (optional) config for resolving entry file for node_modules. This value overrides themain
attribute in the package.json file; used in conjunction with the packageFilter of theresolve
package.tsConfig
: (optional) path to a typescript configuration. Could also be an object representing a pre-parsed typescript config.tsConfigPath
: (optional) A (virtual) Path to typescript config file whentsConfig
option is given as an object, not a string. Needed to calculate Path Mapping. If not given whentsConfig
is an object, Path Mapping is ignored. This is not need whentsConfig
is given as string (path to the tsconfig file).noTypeDefinitions
: (optional) For typescript files, whether to prefer*.js
over*.d.ts
.
Registered languages
By default, filing-cabinet provides support for the following languages:
- JavaScript: CommonJS, AMD, ES6
- TypeScript
- CSS Preprocessors: Sass (
.scss
and.sass
), Stylus (.styl
), and Less (.less
)
You can register resolvers for new languages via cabinet.register(extension, resolver)
.
extension
: the extension of the file that should use the custom resolver (ex: '.py', '.php')resolver
: a function that accepts the following (ordered) arguments that were given to cabinet:partial
filename
directory
config
For examples of resolver implementations, take a look at the default language resolvers:
If a given extension does not have a registered resolver, cabinet will use
a generic file resolver which is basically require('path').join
with a bit of extension defaulting logic.
Shell script
- Requires a global install
npm install -g filing-cabinet
filing-cabinet [options] <dependencyPath>
- See
filing-cabinet --help
for details on the options