Node.js 在使用无服务器Web包的无服务器部署期间使用现有节点\ U模块
我正在使用Node.js 在使用无服务器Web包的无服务器部署期间使用现有节点\ U模块,node.js,amazon-web-services,webpack,serverless,serverless-webpack-plugin,Node.js,Amazon Web Services,Webpack,Serverless,Serverless Webpack Plugin,我正在使用serverless体系结构开发节点应用程序。我们正在使用serverless webpack插件构建应用程序。这是webpack.config.js module.exports = { mode: isLocal ? 'development' : 'production', entry: slsw.lib.entries, externals: [nodeExternals()], devtool: 'inline-cheap-module-source-map'
serverless
体系结构开发节点应用程序。我们正在使用serverless webpack
插件构建应用程序。这是webpack.config.js
module.exports = {
mode: isLocal ? 'development' : 'production',
entry: slsw.lib.entries,
externals: [nodeExternals()],
devtool: 'inline-cheap-module-source-map',
resolve: {
extensions: ['.js', '.jsx', '.json', '.ts', '.tsx']
},
output: {
libraryTarget: 'commonjs2',
path: path.join(__dirname, '.webpack'),
filename: '[name].js'
},
optimization: {
minimize: true,
minimizer: [new TerserPlugin()],
},
target: 'node',
module: {
rules: [{
test: /\.ts$/,
exclude: /node_modules/,
loader: 'ts-loader',
options: {
// disable type checker - we will use it in fork plugin
transpileOnly: true
}
},
{
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
loader: 'graphql-tag/loader',
}
]
},
// plugins: [new ForkTsCheckerWebpackPlugin()]
};
下面是serverless.yml
文件:
service: app
provider:
name: aws
region: ${env:AWS_REGION}
stage: ${env:STAGE}
logRetentionInDays: 90
role: ${env:ROLE}
versionFunctions: false
runtime: nodejs12.x
package:
individually: true
plugins:
- serverless-webpack
- serverless-offline
custom:
webpack:
webpackConfig: './webpack-gql.config.js'
packager: 'npm'
includeModules: true
functions:
######## GraphQl ###########
graphql:
role: ${env:ROLE}
runtime: nodejs12.x
timeout: 30
handler: aws/lambda/common/api/graphql.graphqlHandler
events:
- http:
path: graphql
method: post
- http:
path: graphql
method: get
当我运行sls deploy--config serverless.yml
部署应用程序时,一切正常,lambda部署成功。
唯一的问题是,在部署过程中,它正在使用包锁.json
并再次安装使用过的包:
Serverless: Package lock found - Using locked versions
Serverless: Packing external modules: graphql-compose@^7.19.3, linewrap@^0.2.1, d64@^1.0.0, graphql-scalars@^1.2.6, graphql-tools@^6.0.12
Serverless: Packaging service...
我的问题是如何在部署期间停止重新运行npm安装,而不是在打包外部模块时使用现有的node\u moudles
。
有人能帮我吗 尝试从
webpack.config.js
中的规则中删除exclude:/node\u modules/,
。是否有理由将所有的node\u模块
放在软件包中?这可能会导致您的无服务器软件包变得庞大,因为它现在包含所有npm软件包。我绝对不推荐它。@ultimoTG No我想要的是,它应该从node\u模块
中获取软件包,而不是在打包时重新安装。