webpack打包node后端项目

webpack打包后端项目

后端项目写好了,感觉也可以打包一下,然后就想到了用webpack试试

先要下载webpack和webpack-cli

npm install webpack webpack-cli

然后创建webpack配置文件webpack.config.js

核心配置为entryoutputtarget

但是因为咱们是后端项目,和前端有些不同,比如不需要打包依赖项,运行的时候直接用node_modules,另外还需要让webpack保留node专门的内置模块

所以需要配置externals(忽略依赖)和node(需要保留__dirname__filename,避免这两个值被webpack替换掉)

我的webpack.config.js如下

const path = require('path')
module.exports = {mode: "development",entry: './src/app.js',output: {filename: 'app.js',path: path.resolve(__dirname, 'dist')},target: 'node',externals: { // 忽略node_modules中的依赖项 express: 'commonjs express',config: 'commonjs config',cors: 'commonjs cors',jsonwebtoken: 'commonjs jsonwebtoken',multer: 'commonjs multer',pg: 'commonjs pg'},node: { // 让这两个node的内置项 不被webpack打包替换掉 __dirname: false,__filename: false}

关于忽略依赖项,其实有更简单的配置法,可以直接使用webpack-node-externals这个库来忽略所有node_modules依赖

也需要先下载才能用:npm install webpack-node-externals --save-dev

然后webpack.config.js就像下面这样

const path = require('path')
const nodeExternals = require('webpack-node-externals')
module.exports = {mode:"development",entry: './src/app.js',output: {filename: 'app.js',path: path.resolve(__dirname, 'dist')},target: 'node',externals:[nodeExternals()],node: { // 这些选项可以使Node.js内置模块在Webpack中可用 __dirname: false,__filename: false}
}

配置完后,就可以正常进行打包了,然后可以设置一下package.json的脚本,这样方便运行

 "scripts": {"build": "webpack","start": "node dist/app.js"},

写好后端代码以后直接npm run build 然后 npm run start就运行了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/891393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ReactiveStreams、Reactor、SpringWebFlux

注意: 本文内容于 2024-12-28 21:22:12 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:ReactiveStreams、Reactor、SpringWebFlux。感谢您的关注与支持! ReactiveStreams是…

Android笔试面试题AI答之Android基础(8)

Android入门请看《Android应用开发项目式教程》,视频、源码、答疑,手把手教 文章目录 1.Android新建工程需要注意的地方有哪些?**1. 选择合适的项目模板****2. 配置项目基本信息****3. 选择最低 SDK 版本****4. 配置构建工具****5. 选择编程…

【阻塞队列】- ArrayBlockingQueue 的原理-迭代器

文章目录 1. 前言2. 迭代器3. Itrs3.1 参数3.2 迭代器 Itr3.2.1 参数3.2.2 构造器3.2.3 hasNext3.2.4 next3.2.5 remove3.2.6 shutdown3.2.7 removedAt3.2.8 takeIndexWrapped 3.3 doSomeSweeping(tryHandler)3.4 register3.5 takeIndexWrapped3.6 remov…

ARM 汇编基础总结

GNU 汇编语法 编写汇编的过程中,其指令、寄存器名等可以全部使用大写,也可以全部使用小写,但是不能大小写混用。 1. 汇编语句的格式 label: instruction comment label即标号,表示地址位置,有些指令前面可能会有标…

【MySQL】深度学习数据库开发技术:使用CC++语言访问数据库

**前言:**本节内容介绍使用C/C访问数据库, 包括对数据库的增删查改操作。 主要是学习一些接口的调用, 废话不多说, 开始我们的学习吧! ps:本节内容比较容易, 友友们放心观看哦! 目录 准备mysql…

华为配置 之 RIP

简介: RIP(路由信息协议)是一种广泛使用的内部网关协议,基于距离向量算法来决定路径。它通过向全网广播路由控制信息来动态交换网络拓扑信息,从而计算出最佳路由路径。RIP易于配置和理解,非常适用于小型网络…

1.GPU简介及英伟达开发环境配置

前言 This book shows how, by harnessing the power of your computer’s graphics process unit (GPU), you can write high-performance software for a wide rangeof applications.Although originally designed to render computer graphics ona monitor (and still used…

电脑cxcore100.dll丢失怎么办?

电脑运行时常见问题解析:应对DLL文件丢失、文件损坏与系统报错的实用指南 在数字时代,电脑已成为我们工作、学习和娱乐不可或缺的工具。然而,正如任何精密机械都可能遇到故障,电脑在运行过程中也难免会遇到各种问题,如…

【无线传感网】时间同步技术

文章目录 时间同步模型时钟模型1. 节点本地时钟模型2. 节点逻辑时钟模型 通信模型1. 单向报文传递2. 双向报文交换3. 广播参考报文4. 参数拟合技术 时钟同步的误差来源 时间同步协议时钟同步的类别1. 时钟速率同步与偏移同步2. 同步期限:长期同步与按需同步3. 同步范…

C# 实用工具分享(1)

大家好,今天分享一些在开发过程中比较实用的工具。 首先在软件开发的过程中不可避免的要使用截图这样的功能,以前这样的功能我自己也是选择开发出新功能。但是自己开发还是非常费时费力的,并且效果也不一定特别好。 于是我找到了一个现成的…

积分图(Integral Image)与均值滤波的快速实现

积分图(Integral Image)也称为求和图(Summed Area Table),是一种用于快速计算图像中任意矩形区域像素值总和的技术。 基本概念 积分图的每个位置(i, j)存储的是从图像左上角(1, 1)到当前位置(i, j)所有像素值的累积和…

curl+openssl 踩坑笔记

curl编译:点击跳转 踩坑一 * SSL certificate problem: unable to get local issuer certificate * closing connection #0 curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html …

[AI] 深度学习的“黑箱”探索:从解释性到透明性

目录 1. 深度学习的“黑箱”问题:何为不可解释? 1.1 为什么“黑箱”问题存在? 2. 可解释性研究的现状 2.1 模型解释的方法 2.1.1 后置可解释性方法(Post-hoc Explanations) 2.1.2 内在可解释性方法(I…

python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作

出现了这个问题,就好像是我要去找在南方的人,然后我刚好不分南北,我认为的方向错了,实则方向对了。 在我针对复盘解决:sqlite3.OperationalError: unrecognized token: “{“-CSDN博客这个内容的时候,又出现…

对称密码算法(分组密码算法 序列密码算法 密码杂凑算法)中的基本操作

对称密码算法(分组密码算法 序列密码算法 密码杂凑算法)中的基本操作 相比非对称加密算法,对称加密算法因为加解密效率较高,因而在日常使用中更加广泛。为了让大家更加熟悉常见的对称加密算法,本文列举出了对称密码算法设计中经常用到的13种基…

大数据治理,数字化转型运营平台建设方案(PPT完整版)

1、大数据治理整体运营思路 2、数据资产定义及流程规范 3、治理规范及质量管控 4、质量考核标准及提升方案 软件全套资料部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划…

专题十四——BFS

目录 一BFS解决FloodFill算法 1图像渲染 2岛屿数量 3岛屿的最大面积 4被环绕的区域 二BFS解决蛋源最短路径问题 1迷宫中离入口最近的出口 2最小基因变化 3单词接龙 4为高尔夫比赛砍树 三BFS解决多源最短路径问题 1 01矩阵 2飞地的数量 3地图中的最高点 4地图分…

DMDRS部署:搭建DM8-DM8数据同步

一、部署要求 1.1 硬件要求 DMDRS服务描述源DMDRS 内存要求至少2GB的内存空间。推荐配置4GB及以上的内存空间。 源DMDRS对内存空间的需求主要与装载的并发数相关。当内存空间配置低于2GB时,可以调整装载的线程数来降低源DMDRS对内存空间的需求。 磁盘要求至少10GB…

仓颉笔记——windows11安装启用cangjie语言,并使用vscode编写“你好,世界”

2025年1月1日第一篇日记,大家新年好。 去年就大致看了一下,感觉还不错,但一直没上手,这次借着元旦的晚上安装了一下,今年正式开动,公司众多的应用国产化正等着~~ 第一步:准备 官网:…

datalist的作用?怎么用的?

在 HTML 中&#xff0c;<datalist> 元素用于为 <input> 元素提供一个可选项列表&#xff0c;帮助用户通过预定义的选项进行快速选择。它是一个增强输入体验的功能&#xff0c;类似于自动完成&#xff08;autocomplete&#xff09;&#xff0c;但与传统的 <selec…