# class-autoloader

> A class autoloader, just like Rails class autoloader

Latest version **1.0.3** (published 2018-10-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install class-autoloader
pnpm add class-autoloader
yarn add class-autoloader
bun add class-autoloader
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2018-10-30 |
| First published | 2018-09-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 9.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Fred Shaw |
| Maintainers | fredshawf |
| Keywords | autoload, class, rails, reload |

## Links

- npm: https://www.npmjs.com/package/class-autoloader
- Repository: https://github.com/fredxiaoF/class-autoloader
- Homepage: https://github.com/fredxiaoF/class-autoloader#readme
- Issues: https://github.com/fredxiaoF/class-autoloader/issues
- npm.io page: https://npm.io/package/class-autoloader

## Recent versions

- 1.0.3 (latest) — 2018-10-30
- 1.0.2 — 2018-09-26
- 1.0.1 — 2018-09-25
- 1.0.0 — 2018-09-20

## README

class-autoloader
================

> class-autoloader is a class autoloader, just like Rails class autoloader

## Install
>Install with [npm](https://github.com/npm/npm)

```
$ npm install class-autoloader
```


## Hello world
```sh
npm install class-autoloader
touch index.js
mkdir app
mkdir app/controllers
touch app/controllers/articles_controller.js
```

articles_controller.js
```js
module.exports = class ArticlesController {
  static hello() {
    return "Hi!";
  }
}
```

index.js:
```js
const ClassAutoloader = require('class-autoloader');

const Config = {
  autoload_paths: ['app/controllers'],
  cache_classes: false
}

const Loader = new ClassAutoloader(Config);
```

Run it
```sh
$ node -r index.js
> ArticlesController.hello();
Hi!
```

Now modify the file articles_controller.js 
```js
module.exports = class ArticlesController {
  static hello() {
    return 'Hello Fred!';
  }
}
```
And call again
```sh
$ node -r index.js
> ArticlesController.hello();
Hi!
> ArticlesController.hello();
Hello Fred!
```

## Cache classes
You can set cache_classes with true to cache classes. It will cause no class will be autoloaded

## Name scope
You can also specify a name scope e.g.

```sh
$ mkdir app/controllers/my_scope
$ touch app/controllers/my_scope/one_class.js
```
```js
MyScope.OneClass // will cause autoload one_class.js
```

## Eager load
Set cache_classes and eager_loader with true, classes will be autoloaded before call it 


## License
The MIT License, 2018 [Fred Shaw](https://github.com/fredxiaoF) ([@FredShawF](https://twitter.com/FredShawF))

---
_Source: https://npm.io/package/class-autoloader · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
