当前位置: 首页 > article >正文

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.kler.cn/a/463475.html

相关文章:

  • 网络安全【C10-2024.10.1】-sql注入基础
  • 如何逐步操作vCenter修改DNS服务器?
  • 高效管理 Nginx 的利器:nginxWebUI 指南和 Docker 部署安装过程
  • Tailwind CSS 实战:动画效果设计与实现
  • 硬件工程师面试题 21-30
  • oceanbase集群访问异常问题处理
  • 3维场景测试自动化
  • 18.2、网络安全评测技术与攻击
  • excel怎么删除右边无限列(亲测有效)
  • 青少年编程与数学 02-005 移动Web编程基础 15课题、移动应用开发
  • CentOS Stream 9 安装 JDK
  • 三分钟在你的react项目中引入tailwindcss
  • Vue.js组件开发-刷新当前页面方法
  • pyQT + OpenCV小练习
  • PyCharm专项训练5 最短路径算法
  • 【kubernetes组件合集】深入解析Kubernetes组件之三:client-go
  • 中国香港阿里云200M不限流量轻量云主机测试报告
  • 怎样用 Excel 做数据分析?
  • python-leetcode-删除有序数组中的重复项 II
  • SOME/IP 协议详解——远程过程调用(RPC)
  • python3GUI--网络流量分析系统 By:PyQt5
  • 电话男 AI 语音,用于变声器和文本
  • 从 Elastic 迁移到 Easysearch 指引
  • 探索Docker:解锁容器化的神奇世界
  • Quartz任务调度框架实现任务动态执行
  • springboot509基于Springboot和BS架构的宠物健康咨询系统(论文+源码)_kaic