Правильный способ импорта зависимостей разработчиков в Express приложение с ESLint - PullRequest
0 голосов
/ 10 июля 2020

Сегодня ESLint заставил меня задуматься. Я создаю простое приложение Express, и оно кричит, потому что я импортирую DevDependencies в свой файл app.ts (да, я использую Typescript). В основном я хочу, чтобы мое приложение использовало пакеты npm dotenv и morgan только при разработке. В производстве ни один из этих пакетов мне не понадобится. Итак, как правильно включить их в мой проект?

Вот моя текущая настройка:

Basi c app.ts файл:

import express from 'express';
import morgan from 'morgan';
import dotenv from 'dotenv';
import helmet from 'helmet';
import compression from 'compression';
import cookieParser from 'cookie-parser';
import https from 'https';
import path from 'path';
import fs from 'fs';

import logger, { stream } from './util/logger';

/**
 * Express Application Class
 */
class App {
  public app: express.Application;

  public port: number;

  constructor(port: number) {
    this.app = express();
    this.port = port;

    this.registerMiddleware();
  }

  /**
   * Registers middleware for use
   */
  private registerMiddleware(): void {
    /** Use dotenv for development env variables */
    if (process.env.NODE_ENV !== 'production') {
      dotenv.config();
      this.app.use(morgan('dev', { stream }));
    }

    this.app.use(helmet());
    this.app.use(compression());
    this.app.use(express.json());
    this.app.use(express.urlencoded({ extended: false }));
    this.app.use(cookieParser());
  }

  /**
   * Starts the Express.js server.
   */
  public start(): void {
    this.app.listen(this.port, () => {
      logger.info(`Server started at https://localhost:${this.port}`);
    });
  }

  /**
   * Starts the secure Express.js server.
   */
  public startDev(): void {
    /** Start a secure Express server for local testing */
    https
      .createServer(
        {
          key: fs.readFileSync(path.resolve('server.key')),
          cert: fs.readFileSync(path.resolve('server.crt')),
        },
        this.app
      )
      .listen(3000, () => {
        logger.info(`Secure server started at https://localhost:${this.port}`);
      });
  }
}

export default App;

Basi c server.ts файл:

import App from './app';

/**
 * Init Express.js server.
 */
const server = new App(3000);

/**
 * Start Express.js server.
 */
if (process.env.NODE_ENV !== 'production') {
  server.startDev();
} else {
  server.start();
}

1 Ответ

0 голосов
/ 10 июля 2020

вы можете сохранить их как необязательные зависимости, отличные от зависимостей разработчика, используя

npm install dotenv morgan --save-optional

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...