如何使用 webpack 捆绑 puppeteer 进行生产部署?
Posted
技术标签:
【中文标题】如何使用 webpack 捆绑 puppeteer 进行生产部署?【英文标题】:How to bundle puppeteer for production deployment using webpack? 【发布时间】:2019-05-01 14:54:22 【问题描述】:我正在使用 express 创建一个节点 API,它将使用 puppeteer 为给定的 url 创建一个 PDF。如何将我的应用程序与 webpack 捆绑在一起进行生产?我不想全局安装 puppeteer 并在我将托管它的服务器中表达,我不想在服务器上调用 npm install
。我希望 puppeteer 和 express 与 js 文件一起出现。我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:如果有人好奇我是如何解决这个问题的 - 我使用 webpack 和以下配置:
import webpack from 'webpack';
import path from 'path';
import nodeExternals from 'webpack-node-externals';
const config: webpack.Configuration =
mode: "production",
entry: "./src/server.ts",
target: "node",
output:
path: path.resolve(__dirname, 'dist'),
filename: "main.js"
,
resolve:
extensions: [".ts", ".js"],
,
devtool: "source-map",
module:
rules: [
test: /\.ts$/,
exclude: /node_modules/,
use:
loader: "ts-loader",
options:
transpileOnly: true
],
,
externals: nodeExternals()
export default config;
在持续集成服务器中,我运行以下命令:
npm install
webpack
npm ci
这里的技巧是 npm ci
(从 npm v6 开始),它从 node_modules
中删除 devDependencies。之后,我将node_modules
与转译的js
文件一起包含在部署包中
【讨论】:
你的意思是你在 node_modules 文件夹中签入了代码? 不,我没有。我认为在 CI 服务器上npm install
安装所有依赖项,包括开发依赖项(如 puppeteer),然后 webpack 将所有这些捆绑到可执行的 js 中。 npm ci
然后删除 node_modules
文件夹。
我在依赖项中使用 puppeteer 而不是 dev 依赖项,我必须将 node_modules 添加到我的仓库中,我无法将它捆绑在 .js 输出中
我遇到了像你这样的问题,但还没有幸运地解决它
您介意分享 package.json 文件吗?以上是关于如何使用 webpack 捆绑 puppeteer 进行生产部署?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Webpack 捆绑 Express Js (NodeJs) 和 Pug 引擎?
如何调试打字稿代码,在 vscode/vs2015 中使用 webpack 捆绑