我已經處理了這一點,發現它很令人沮喪。如果你從你的設置部署,你的api是什麼樣的?對於單個serverless.yaml
文件,您最終將獲得獨立的api端點(假設您正在使用api調用觸發,而不是s3)。
我結束了這樣的結構:
|- serverless/
|--- serverlsss.yml
|--- web pack.config.js
|--- dist/
|--- node_modules() /* dev and common code */
|--- src/
|----- function1/
|-------- node_modules
|-------- package.json
|-------- index.js
|----- function2/
|-------- node_modules
|-------- package.json
|-------- index.js
我用的是無服務器的WebPack插件輸出的各個功能到dist/
目錄。 serverless.yaml
然後指向這些。
的webpack.config.js
看起來是這樣的:
const nodeExternals = require('webpack-node-externals');
const path = require('path');
module.exports = {
entry: {
'function1': './src/function1/index.js',
'function2': './src/function2/index.js',
},
target: 'node',
output:{
libraryTarget: 'commonjs2',
path: path.join(__dirname, './dist'),
filename: '[name].js'
},
externals: [nodeExternals()],
module: {
loaders: [
/* Babel is nice, but it's adding a some bulk and I don't need it
{
test: /\.js$/,
loaders: ['babel'],
include: __dirname,
exclude: /node_modules/,
}, */
{
test: /\.json$/,
loaders: ['json']}
],
},
};
// externals: [nodeExternals()],
// nodeExternals seems to break aws-sdk when serving locally
// aws-sdk should be in dev-dependencies of root folder
// that way it's available in dev but doesn't get packaged.
// It's available to the lambdas when deployed.
之後,只要確保你設置的個人標誌serverless.yml
package:
individually: true
的的WebPack插件是相當不錯的,並做最繁重的工作。有了這個功能,我可以執行一次部署,所有功能最終都會作爲單個lambda函數在一個api端點下完成。您還可以獲得Webpack開發服務器,以便您可以運行serverless webpack serve
來測試您的功能。
這是一個有點痛苦的設置,但它一直工作得很好。