【发布时间】:2020-09-20 21:47:33
【问题描述】:
我对 webpack 很陌生,如果这是一个明显的答案,我深表歉意。我目前正在尝试使用此库将 typescript lambda api 部署到 AWS:https://www.npmjs.com/package/ts-lambda-api
该库使用 Inversify 进行依赖注入:https://github.com/inversify/InversifyJS
该库还建议仅使用 zip 进行构建,但如果可以的话,我想使用 webpack。
我的 api 目前有两个文件,一个主 api.ts 文件,然后是一个 controller.ts 文件。目前,api 类使用与 ts-lambda-api 文档中相同的行来查找控制器:
const controllersPath = [path.join(__dirname, "controllers")]
const app = new ApiLambdaApp(controllersPath, appConfig)
因此,一旦绑定了 api.ts 类,我需要控制器目录可供使用。目前我的 webpack 配置如下所示:
import path = require('path')
import webpack = require('webpack')
const config: webpack.Configuration = {
module: {
rules: [
{ test: /\.js\.map$/, use: "ignore-loader" },
{ test: /\.d\.ts$/, use: "ignore-loader" }
]
},
mode: 'production',
entry: {
my_api: ['./src/my-api.js'],
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name]/main.js',
library: '[name]',
libraryTarget: 'commonjs2'
},
target: 'node',
externals: [/aws-sdk.*/, 'aws-lambda']
};
export default config
如何添加到它以允许我的 api 访问它需要的其他类? webpack 文档在多个入口点 (https://webpack.js.org/concepts/entry-points/#multi-page-application) 上有一个页面,但这似乎不是我想要的,因为它给了我多个包。
我可以通过执行以下操作将多个文件放入一个包中:
api: ['./src/api.js','./src/controllers/controller.js],
虽然这不适用于 Injectable 注释。有人有其他想法吗?
【问题讨论】:
标签: node.js typescript webpack aws-lambda