webpack打包node后端项目

webpack打包后端项目

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

先要下载webpack和webpack-cli

typescript 复制代码
npm install webpack webpack-cli

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

核心配置为entryoutputtarget

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

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

我的webpack.config.js如下

typescript 复制代码
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就像下面这样

typescript 复制代码
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的脚本,这样方便运行

typescript 复制代码
 "scripts": {
    "build": "webpack",
    "start": "node dist/app.js"
  },

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

相关推荐
import_random7 分钟前
[深度学习]5大神经网络架构(介绍)
后端
穗余16 分钟前
WEB3全栈开发——面试专业技能点P1Node.js / Web3.js / Ethers.js
javascript·node.js·web3
pengyu17 分钟前
【Java设计原则与模式之系统化精讲:壹】 | 编程世界的道与术(实战指导篇)
java·后端·设计模式
陈随易21 分钟前
一行代码,将网页元素变成图片!比 html2canvas 快 93 倍的截图神器来了!
前端·后端·程序员
Kookoos22 分钟前
性能剖析:在 ABP 框架中集成 MiniProfiler 实现性能可视化诊断
后端·c#·.net·abp vnext·miniprofiler
掉头发的王富贵23 分钟前
Arthas神器入门:动态调试Java应用,轻松搞定生产环境Bug!
java·后端·debug
汪子熙27 分钟前
解密 Fabric 体系 —— 架构与实践全解析
后端
oraen29 分钟前
一篇文章让你在根本上理解遗传算法,用牛刀杀鸡-使用遗传撕力扣
后端
程序员爱钓鱼30 分钟前
Go语言并发模型与模式:Worker Pool 模式
后端·go·排序算法
Victor35631 分钟前
MySQL(66)如何进行慢查询日志分析?
后端