[英]How to bundle a nodejs server application and prepare it for distribution?
首先,我不希望将应用程序打包为单个可执行文件。
我很好奇要找到在当前项目中创建应用程序副本的方法,该副本已准备好移至启用服务器的位置。
现在,我的服务器应用程序是一个git repo,其中包含所有常用文件以及源文件夹:
./src/server/index.js
我们是否只是将./src/server
文件夹中的./src/server
复制到./dist/
然后还将package.json
复制到./dist
?
然后,我们将./dist
文件夹的内容复制到能够为应用程序提供服务的位置,例如/www/app2/
并在该位置内部,确保环境中具有NODE_ENV=production
并运行npm install
拉生产依赖?
但是,然后,我们的package.json
文件仍然具有与开发相关的脚本以及生产中不需要的其他东西吗?
部署NodeJs应用的最佳实践是什么?
-更新-
到目前为止,这是我已经原型化的,并且正在运行:
"scripts": {
"clean:dist": "./node_modules/.bin/rimraf dist",
"prep:dist": "./node_modules/.bin/mkdirp ./dist",
"copy:server": "./node_modules/.bin/ycopy ./src/server/ ./dist/ -r '^((?!tests$).)*$' -i",
"copy:package": "./node_modules/.bin/copyfiles package-production.json ./dist/",
"build": "npm run clean:dist && npm run prep:dist && npm run copy:server",
"start:dev": "nodemon src/server/index.js",
"start:server": "node dist/server/index.js",
"prompt": "echo 'No prompt functionality available'",
"greet": "echo 'Welcome to my project.'"
},
因此,想法是有选择地将位从dev/src
文件夹移动到生产就绪的dist
文件夹。 拥有一个简单的package.json文件的想法是,我们将不再需要dev
依赖关系,也将不再需要大多数dev scripts
。 因此,大概像以下内容就足够了:
"scripts": {
"setup:server": "NODE_ENV='production' && npm install"
"start:server": "pm2 start index.js"
}
...或者也许我们想在./dist/bin
中包含一些csh/bash
脚本,以简化启动过程。
"scripts": {
"start:server": "./bin/launcher"
}
我绝对可以看到需要在./dist
文件夹中存在并且与./src
结构完全不同的自定义项目树结构。
我不确定为什么package.json的“开发”内容有问题,所以也许我没有弄清您的问题的症结所在。 但是,对于我们的环境,我们使用ansible部署所有节点应用程序(主要是微服务)。 部署程序包只是一个tarball(可以是zip文件)。 ansible软件包包括config.js文件和pm2 startup.json文件的模板,这些模板都是根据目标环境(阶段/测试与生产)定制的。
如果您对此方法感兴趣,请让我知道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.