繁体   English   中英

如何捆绑一个nodejs服务器应用程序并为分发做准备?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM