如果将NodeJs项目打包为一个可执行的文件,那么对于部署、安装来说,很简单,甚至是运行环境都不用再做配置,对源码的保护性也有很多的好处

操作步骤

  1. 全局安装pkg库,也可以不局部安装,全局安装更方便

    npm install pkg -g
  2. 以express搭建一个默认的web项目为例,修改package.json文件,如下:

    {
      "name": "test",
      "version": "0.0.0",
      "private": true,
      "bin":"./bin/www",
      "scripts": {
     "start": "node ./bin/www",
     "pkg": "pkg . -t  node10-win-x64 -o app"
      },
      "pkg":{
     "assets":["public/**/*","views/*"]
      },
      "dependencies": {
     "cookie-parser": "~1.4.3",
     "debug": "~2.6.9",
     "express": "~4.16.0",
     "http-errors": "~1.6.2",
     "jade": "~1.11.0",
     "morgan": "~1.9.0"
      },
      "bundledDependencies": ["express"]
    }

    特别注意:

    1. 需要指定bin为项目启动文件,例如"bin":"./bin/www",
    2. pkg会寻找指定目录下的package.json文件,然后在找bin字段作为入口文件。
    3. -t指定打包的目标平台和Node版本,例如: -t node6-win-x64,node6-linux-x64,node6-macos-x64可以同时打包3个平台的可执行程序
    4. -o指定输出可执行文件的名称,但如果用-t指定了多个目标,那么就要用--out-path指定输出的目录
    5. scriptsassets用来配置未打包进可执行文件的脚本和资源文件,文件路径可以使用glob通配符。
  3. 运行npm run pkg打包出来你想要的可执行文件