# Angular and Node.js DEBUG Decorator

## Introduction

You can apply @Debug() decorator on your Angular and Node.js application methods to mark them to be executed in debug mode only.

For Angular when you build application for production using `ng build --prod` command, all methods marked with `@Debug()` decorator will not be exeucted in production mode.

So no more `if(environment.production){}` code block in your source code.

## Angular client usage

* Install ng-debug-decorator npm package by running below command in your Angular application

`npm i --save-dev ng-debug-decorator`

* Provide environment information to decorator configuration by calling `@SetupEnvironment()` function in `app.component.ts` `ngOnInit()` function. This has to be done only once.

```  
import { environment } from 'src/environments/environment';
import { SetupEnvironment, Debug } from 'ng-debug-decorator';

  @SetupEnvironment(environment)
  ngOnInit() {
    this.sayHi();
  }

  @Debug()
  sayHi() {
    alert('I am debug code');
  }

```


* Apply `@Debug()` decorator on method(s)

* Build application in development mode by running command `ng build`.
 
* Navigate to `dist` folder and run website using any web server e.g. `lite-server`.

You should see method being executed with `@Debug()` decorator

* Now, build applicatiojs using `ng build --prod` command

* Navigate to `dist` folder and run website using any web server e.g. `lite-server`.

Now you should NOT see output of method(s) on which `@Debug()` decorator is applied.

Here is the [Angular client](https://github.com/ultrasonicsoft/ng-debug-decorator-client) example repository.

## Node.js client usage

* Install `ng-debug-decorator` npm package by running below command in your Nod.ejs application

`npm i --save-dev ng-debug-decorator`

* Import `Debug` function from `ng-debug-decorator` package

```import { Debug } from "ng-debug-decorator";```

* Apply `@Debug()` decorator on class method's


* Update `package.json` for specifying environment settings

```
"scripts": {
   "start": "NODE_ENV=development node ."
}
```

* Run application by executing command `npm run start`.

If you are in production environment then all methods with `@Debug()` method won't get executed at runtime.