typescript - Hvordan pakke puppeteer for produksjonsdistribusjon ved hjelp av webpack?
Jeg lager en Node API med Express som vil opprette en PDF ved hjelp av Puppeteer for en gitt URL. Hvordan kan jeg pakke applikasjonen min for produksjon med Webpack? Jeg ønsker ikke å installere Puppeteer og Express globalt på serveren hvor jeg skal hoste den, og jeg ønsker ikke å kjøre npm install på serveren. Jeg vil at Puppeteer og Express skal komme sammen med JS-filene. Hvordan kan jeg oppnå det?
Svar #1
Hvis noen er nysgjerrige på hvordan jeg løste dette - jeg brukte webpack med følgende konfigurasjon:
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;
Og på Continuous Integration-serveren kjører jeg følgende kommandoer:
npm install
webpack
npm ci
Trikset her er npm ci (siden npm v6) som fjerner devDependencies fra node_modules. Etter det inkluderer jeg node_modules i distribusjonspakken sammen med transpilert js-filer
