webpack打包node后端项目
webpack打包后端项目
后端项目写好了,感觉也可以打包一下,然后就想到了用webpack试试
先要下载webpack和webpack-cli
npm install webpack webpack-cli
然后创建webpack配置文件webpack.config.js
核心配置为entry
、output
、target
但是因为咱们是后端项目,和前端有些不同,比如不需要打包依赖项,运行的时候直接用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
就运行了