提问者:小点点

使用ESLint导入Express应用程序中开发依赖项的正确方法


艾斯林特今天让我反思自己。 我正在构建一个简单的Express应用程序,因为我正在导入app.ts文件中的DevDependencies(是的,我使用的是Typescript),所以它很吵。 基本上,我希望我的应用程序只在开发时使用npm包dotenvmorgan。 在生产中,我将不需要这两个包中的任何一个。 那么在我的项目中包含这些内容的正确方式是什么呢?

下面是我当前的设置:

基本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;

基本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个答案

匿名用户

您可以将它们保存为除开发依赖项之外的可选依赖项,使用

npm install dotenv morgan --save-optional

参考