seimin %!s(int64=3) %!d(string=hai) anos
pai
achega
e514d9a5bb
Modificáronse 4 ficheiros con 323 adicións e 1 borrados
  1. 233 0
      package-lock.json
  2. 4 1
      package.json
  3. 43 0
      upload/development.js
  4. 43 0
      upload/production.js

+ 233 - 0
package-lock.json

@@ -51,6 +51,7 @@
51 51
         "rimraf": "^2.6.0",
52 52
         "semver": "^5.3.0",
53 53
         "shelljs": "^0.7.6",
54
+        "ssh2-sftp-client": "^7.2.0",
54 55
         "stylus": "^0.54.5",
55 56
         "stylus-loader": "^2.1.1",
56 57
         "uglifyjs-webpack-plugin": "^1.1.1",
@@ -307,6 +308,16 @@
307 308
         "node": ">=0.10.0"
308 309
       }
309 310
     },
311
+    "node_modules/asn1": {
312
+      "version": "0.2.6",
313
+      "resolved": "https://registry.npmmirror.com/asn1/download/asn1-0.2.6.tgz?cache=0&sync_timestamp=1635986760581&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fasn1%2Fdownload%2Fasn1-0.2.6.tgz",
314
+      "integrity": "sha1-DTp7tuZOAqkMAwOzHykoaOoJoI0=",
315
+      "dev": true,
316
+      "license": "MIT",
317
+      "dependencies": {
318
+        "safer-buffer": "~2.1.0"
319
+      }
320
+    },
310 321
     "node_modules/asn1.js": {
311 322
       "version": "5.4.1",
312 323
       "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-5.4.1.tgz",
@@ -1466,6 +1477,15 @@
1466 1477
       "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
1467 1478
       "dev": true
1468 1479
     },
1480
+    "node_modules/bcrypt-pbkdf": {
1481
+      "version": "1.0.2",
1482
+      "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
1483
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
1484
+      "dev": true,
1485
+      "dependencies": {
1486
+        "tweetnacl": "^0.14.3"
1487
+      }
1488
+    },
1469 1489
     "node_modules/better-scroll": {
1470 1490
       "version": "1.12.6",
1471 1491
       "resolved": "https://registry.nlark.com/better-scroll/download/better-scroll-1.12.6.tgz?cache=0&sync_timestamp=1627912685660&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbetter-scroll%2Fdownload%2Fbetter-scroll-1.12.6.tgz",
@@ -2539,6 +2559,20 @@
2539 2559
         "js-yaml": "bin/js-yaml.js"
2540 2560
       }
2541 2561
     },
2562
+    "node_modules/cpu-features": {
2563
+      "version": "0.0.2",
2564
+      "resolved": "https://registry.npmmirror.com/cpu-features/download/cpu-features-0.0.2.tgz",
2565
+      "integrity": "sha1-n2NhVvEVX9BL26oCi7PC++886no=",
2566
+      "dev": true,
2567
+      "hasInstallScript": true,
2568
+      "optional": true,
2569
+      "dependencies": {
2570
+        "nan": "^2.14.1"
2571
+      },
2572
+      "engines": {
2573
+        "node": ">=8.0.0"
2574
+      }
2575
+    },
2542 2576
     "node_modules/create-ecdh": {
2543 2577
       "version": "4.0.4",
2544 2578
       "resolved": "https://registry.nlark.com/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -4269,6 +4303,12 @@
4269 4303
       "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=",
4270 4304
       "dev": true
4271 4305
     },
4306
+    "node_modules/err-code": {
4307
+      "version": "2.0.3",
4308
+      "resolved": "https://registry.npmmirror.com/err-code/download/err-code-2.0.3.tgz",
4309
+      "integrity": "sha1-I8Lzt1b/38YI0w4nyalBAkgH5/k=",
4310
+      "dev": true
4311
+    },
4272 4312
     "node_modules/errno": {
4273 4313
       "version": "0.1.8",
4274 4314
       "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
@@ -11519,6 +11559,19 @@
11519 11559
       "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
11520 11560
       "dev": true
11521 11561
     },
11562
+    "node_modules/promise-retry": {
11563
+      "version": "2.0.1",
11564
+      "resolved": "https://registry.npmmirror.com/promise-retry/download/promise-retry-2.0.1.tgz",
11565
+      "integrity": "sha1-/3R6E2IKtXumiPX8Z4VUEMNw2iI=",
11566
+      "dev": true,
11567
+      "dependencies": {
11568
+        "err-code": "^2.0.2",
11569
+        "retry": "^0.12.0"
11570
+      },
11571
+      "engines": {
11572
+        "node": ">=10"
11573
+      }
11574
+    },
11522 11575
     "node_modules/proxy-addr": {
11523 11576
       "version": "2.0.7",
11524 11577
       "resolved": "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz",
@@ -12568,6 +12621,15 @@
12568 12621
         "node": ">=0.12"
12569 12622
       }
12570 12623
     },
12624
+    "node_modules/retry": {
12625
+      "version": "0.12.0",
12626
+      "resolved": "https://registry.npmmirror.com/retry/download/retry-0.12.0.tgz",
12627
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
12628
+      "dev": true,
12629
+      "engines": {
12630
+        "node": ">= 4"
12631
+      }
12632
+    },
12571 12633
     "node_modules/rgb-regex": {
12572 12634
       "version": "1.0.1",
12573 12635
       "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
@@ -13337,6 +13399,67 @@
13337 13399
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
13338 13400
       "dev": true
13339 13401
     },
13402
+    "node_modules/ssh2": {
13403
+      "version": "1.5.0",
13404
+      "resolved": "https://registry.npmmirror.com/ssh2/download/ssh2-1.5.0.tgz",
13405
+      "integrity": "sha1-TcVZupihy7Qg6NQpmN/jXQ7akrw=",
13406
+      "dev": true,
13407
+      "hasInstallScript": true,
13408
+      "dependencies": {
13409
+        "asn1": "^0.2.4",
13410
+        "bcrypt-pbkdf": "^1.0.2"
13411
+      },
13412
+      "engines": {
13413
+        "node": ">=10.16.0"
13414
+      },
13415
+      "optionalDependencies": {
13416
+        "cpu-features": "0.0.2",
13417
+        "nan": "^2.15.0"
13418
+      }
13419
+    },
13420
+    "node_modules/ssh2-sftp-client": {
13421
+      "version": "7.2.0",
13422
+      "resolved": "https://registry.npmmirror.com/ssh2-sftp-client/download/ssh2-sftp-client-7.2.0.tgz",
13423
+      "integrity": "sha512-h850dHBeLuKfL9uTQ7y11p8QA687Sr057+Q1paB7dMuO4GDtNwxj/CPwJmvIM5BCzEuNrWf9CnMnIdC23TxzcA==",
13424
+      "dev": true,
13425
+      "dependencies": {
13426
+        "concat-stream": "^2.0.0",
13427
+        "promise-retry": "^2.0.1",
13428
+        "ssh2": "^1.5.0"
13429
+      },
13430
+      "engines": {
13431
+        "node": ">=10.24.1"
13432
+      }
13433
+    },
13434
+    "node_modules/ssh2-sftp-client/node_modules/concat-stream": {
13435
+      "version": "2.0.0",
13436
+      "resolved": "https://registry.npmmirror.com/concat-stream/download/concat-stream-2.0.0.tgz",
13437
+      "integrity": "sha1-QUz1r3kKSMYKub5FJ9VtXkETPLE=",
13438
+      "dev": true,
13439
+      "engines": [
13440
+        "node >= 6.0"
13441
+      ],
13442
+      "dependencies": {
13443
+        "buffer-from": "^1.0.0",
13444
+        "inherits": "^2.0.3",
13445
+        "readable-stream": "^3.0.2",
13446
+        "typedarray": "^0.0.6"
13447
+      }
13448
+    },
13449
+    "node_modules/ssh2-sftp-client/node_modules/readable-stream": {
13450
+      "version": "3.6.0",
13451
+      "resolved": "https://registry.npmmirror.com/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1632380409088&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz",
13452
+      "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
13453
+      "dev": true,
13454
+      "dependencies": {
13455
+        "inherits": "^2.0.3",
13456
+        "string_decoder": "^1.1.1",
13457
+        "util-deprecate": "^1.0.1"
13458
+      },
13459
+      "engines": {
13460
+        "node": ">= 6"
13461
+      }
13462
+    },
13340 13463
     "node_modules/ssri": {
13341 13464
       "version": "5.3.0",
13342 13465
       "resolved": "https://registry.nlark.com/ssri/download/ssri-5.3.0.tgz",
@@ -13916,6 +14039,12 @@
13916 14039
       "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
13917 14040
       "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
13918 14041
     },
14042
+    "node_modules/tweetnacl": {
14043
+      "version": "0.14.5",
14044
+      "resolved": "https://registry.npmmirror.com/tweetnacl/download/tweetnacl-0.14.5.tgz",
14045
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
14046
+      "dev": true
14047
+    },
13919 14048
     "node_modules/type": {
13920 14049
       "version": "1.2.0",
13921 14050
       "resolved": "https://registry.npm.taobao.org/type/download/type-1.2.0.tgz",
@@ -16517,6 +16646,15 @@
16517 16646
       "dev": true,
16518 16647
       "optional": true
16519 16648
     },
16649
+    "asn1": {
16650
+      "version": "0.2.6",
16651
+      "resolved": "https://registry.npmmirror.com/asn1/download/asn1-0.2.6.tgz?cache=0&sync_timestamp=1635986760581&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fasn1%2Fdownload%2Fasn1-0.2.6.tgz",
16652
+      "integrity": "sha1-DTp7tuZOAqkMAwOzHykoaOoJoI0=",
16653
+      "dev": true,
16654
+      "requires": {
16655
+        "safer-buffer": "~2.1.0"
16656
+      }
16657
+    },
16520 16658
     "asn1.js": {
16521 16659
       "version": "5.4.1",
16522 16660
       "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-5.4.1.tgz",
@@ -17617,6 +17755,15 @@
17617 17755
       "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
17618 17756
       "dev": true
17619 17757
     },
17758
+    "bcrypt-pbkdf": {
17759
+      "version": "1.0.2",
17760
+      "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
17761
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
17762
+      "dev": true,
17763
+      "requires": {
17764
+        "tweetnacl": "^0.14.3"
17765
+      }
17766
+    },
17620 17767
     "better-scroll": {
17621 17768
       "version": "1.12.6",
17622 17769
       "resolved": "https://registry.nlark.com/better-scroll/download/better-scroll-1.12.6.tgz?cache=0&sync_timestamp=1627912685660&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbetter-scroll%2Fdownload%2Fbetter-scroll-1.12.6.tgz",
@@ -18542,6 +18689,16 @@
18542 18689
         }
18543 18690
       }
18544 18691
     },
18692
+    "cpu-features": {
18693
+      "version": "0.0.2",
18694
+      "resolved": "https://registry.npmmirror.com/cpu-features/download/cpu-features-0.0.2.tgz",
18695
+      "integrity": "sha1-n2NhVvEVX9BL26oCi7PC++886no=",
18696
+      "dev": true,
18697
+      "optional": true,
18698
+      "requires": {
18699
+        "nan": "^2.14.1"
18700
+      }
18701
+    },
18545 18702
     "create-ecdh": {
18546 18703
       "version": "4.0.4",
18547 18704
       "resolved": "https://registry.nlark.com/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -20035,6 +20192,12 @@
20035 20192
       "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=",
20036 20193
       "dev": true
20037 20194
     },
20195
+    "err-code": {
20196
+      "version": "2.0.3",
20197
+      "resolved": "https://registry.npmmirror.com/err-code/download/err-code-2.0.3.tgz",
20198
+      "integrity": "sha1-I8Lzt1b/38YI0w4nyalBAkgH5/k=",
20199
+      "dev": true
20200
+    },
20038 20201
     "errno": {
20039 20202
       "version": "0.1.8",
20040 20203
       "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
@@ -26057,6 +26220,16 @@
26057 26220
       "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
26058 26221
       "dev": true
26059 26222
     },
26223
+    "promise-retry": {
26224
+      "version": "2.0.1",
26225
+      "resolved": "https://registry.npmmirror.com/promise-retry/download/promise-retry-2.0.1.tgz",
26226
+      "integrity": "sha1-/3R6E2IKtXumiPX8Z4VUEMNw2iI=",
26227
+      "dev": true,
26228
+      "requires": {
26229
+        "err-code": "^2.0.2",
26230
+        "retry": "^0.12.0"
26231
+      }
26232
+    },
26060 26233
     "proxy-addr": {
26061 26234
       "version": "2.0.7",
26062 26235
       "resolved": "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz",
@@ -26917,6 +27090,12 @@
26917 27090
       "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
26918 27091
       "devOptional": true
26919 27092
     },
27093
+    "retry": {
27094
+      "version": "0.12.0",
27095
+      "resolved": "https://registry.npmmirror.com/retry/download/retry-0.12.0.tgz",
27096
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
27097
+      "dev": true
27098
+    },
26920 27099
     "rgb-regex": {
26921 27100
       "version": "1.0.1",
26922 27101
       "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
@@ -27586,6 +27765,54 @@
27586 27765
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
27587 27766
       "dev": true
27588 27767
     },
27768
+    "ssh2": {
27769
+      "version": "1.5.0",
27770
+      "resolved": "https://registry.npmmirror.com/ssh2/download/ssh2-1.5.0.tgz",
27771
+      "integrity": "sha1-TcVZupihy7Qg6NQpmN/jXQ7akrw=",
27772
+      "dev": true,
27773
+      "requires": {
27774
+        "asn1": "^0.2.4",
27775
+        "bcrypt-pbkdf": "^1.0.2",
27776
+        "cpu-features": "0.0.2",
27777
+        "nan": "^2.15.0"
27778
+      }
27779
+    },
27780
+    "ssh2-sftp-client": {
27781
+      "version": "7.2.0",
27782
+      "resolved": "https://registry.npmmirror.com/ssh2-sftp-client/download/ssh2-sftp-client-7.2.0.tgz",
27783
+      "integrity": "sha512-h850dHBeLuKfL9uTQ7y11p8QA687Sr057+Q1paB7dMuO4GDtNwxj/CPwJmvIM5BCzEuNrWf9CnMnIdC23TxzcA==",
27784
+      "dev": true,
27785
+      "requires": {
27786
+        "concat-stream": "^2.0.0",
27787
+        "promise-retry": "^2.0.1",
27788
+        "ssh2": "^1.5.0"
27789
+      },
27790
+      "dependencies": {
27791
+        "concat-stream": {
27792
+          "version": "2.0.0",
27793
+          "resolved": "https://registry.npmmirror.com/concat-stream/download/concat-stream-2.0.0.tgz",
27794
+          "integrity": "sha1-QUz1r3kKSMYKub5FJ9VtXkETPLE=",
27795
+          "dev": true,
27796
+          "requires": {
27797
+            "buffer-from": "^1.0.0",
27798
+            "inherits": "^2.0.3",
27799
+            "readable-stream": "^3.0.2",
27800
+            "typedarray": "^0.0.6"
27801
+          }
27802
+        },
27803
+        "readable-stream": {
27804
+          "version": "3.6.0",
27805
+          "resolved": "https://registry.npmmirror.com/readable-stream/download/readable-stream-3.6.0.tgz?cache=0&sync_timestamp=1632380409088&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Freadable-stream%2Fdownload%2Freadable-stream-3.6.0.tgz",
27806
+          "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
27807
+          "dev": true,
27808
+          "requires": {
27809
+            "inherits": "^2.0.3",
27810
+            "string_decoder": "^1.1.1",
27811
+            "util-deprecate": "^1.0.1"
27812
+          }
27813
+        }
27814
+      }
27815
+    },
27589 27816
     "ssri": {
27590 27817
       "version": "5.3.0",
27591 27818
       "resolved": "https://registry.nlark.com/ssri/download/ssri-5.3.0.tgz",
@@ -28050,6 +28277,12 @@
28050 28277
       "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
28051 28278
       "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
28052 28279
     },
28280
+    "tweetnacl": {
28281
+      "version": "0.14.5",
28282
+      "resolved": "https://registry.npmmirror.com/tweetnacl/download/tweetnacl-0.14.5.tgz",
28283
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
28284
+      "dev": true
28285
+    },
28053 28286
     "type": {
28054 28287
       "version": "1.2.0",
28055 28288
       "resolved": "https://registry.npm.taobao.org/type/download/type-1.2.0.tgz",

+ 4 - 1
package.json

@@ -7,7 +7,9 @@
7 7
   "scripts": {
8 8
     "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9 9
     "start": "npm run dev",
10
-    "build": "node build/build.js"
10
+    "build": "node build/build.js",
11
+    "development": "node ./upload/development.js",
12
+    "production": "node ./upload/production.js"
11 13
   },
12 14
   "dependencies": {
13 15
     "axios": "^0.18.0",
@@ -56,6 +58,7 @@
56 58
     "rimraf": "^2.6.0",
57 59
     "semver": "^5.3.0",
58 60
     "shelljs": "^0.7.6",
61
+    "ssh2-sftp-client": "^7.2.0",
59 62
     "stylus": "^0.54.5",
60 63
     "stylus-loader": "^2.1.1",
61 64
     "uglifyjs-webpack-plugin": "^1.1.1",

+ 43 - 0
upload/development.js

@@ -0,0 +1,43 @@
1
+const shell = require('shelljs')
2
+const path = require('path');
3
+const config = {
4
+  ip: "192.168.3.109", // ssh地址
5
+  username: "root", // ssh 用户名
6
+  port: 22,      //端口
7
+  password: "DStech@123", // ssh 密码
8
+  path: '/home/itsm/project/web/serviceApp', // 上传地址,删除地址
9
+  buildPath: '../dist' // 本地打包后文件地址
10
+}
11
+let Client = require('ssh2-sftp-client');
12
+
13
+function connectSSh() {
14
+  let sftp = new Client();
15
+  sftp.connect({
16
+    host: config.ip,
17
+    port: config.port,
18
+    username: config.username,
19
+    password: config.password
20
+  }).then(() => {
21
+    console.log("-----先执行删除服务器文件-----")
22
+    return sftp.rmdir(config.path, true);
23
+  }).then(() => {
24
+    // 上传文件
25
+    console.log("-----开始上传-----")
26
+    return sftp.uploadDir(path.resolve(__dirname, config.buildPath), config.path);
27
+  }).then((data) => {
28
+    console.log("-----上传完成-----");
29
+    sftp.end();
30
+  }).catch((err) => {
31
+    console.log(err, '-----失败-----');
32
+    sftp.end();
33
+  });
34
+}
35
+function runTask() {
36
+  //打包完成
37
+  if (shell.exec(`npm run build`).code == 0) {
38
+    console.log("-----打包成功-----");
39
+    //提交上传
40
+    connectSSh();
41
+  }
42
+}
43
+runTask()

+ 43 - 0
upload/production.js

@@ -0,0 +1,43 @@
1
+const shell = require('shelljs')
2
+const path = require('path');
3
+const config = {
4
+  ip: "139.129.255.139", // ssh地址
5
+  username: "root", // ssh 用户名
6
+  port: 22,      //端口
7
+  password: "DStech@123", // ssh 密码
8
+  path: '/home/md2/newweb/serviceApp', // 上传地址,删除地址
9
+  buildPath: '../dist' // 本地打包后文件地址
10
+}
11
+let Client = require('ssh2-sftp-client');
12
+
13
+function connectSSh() {
14
+  let sftp = new Client();
15
+  sftp.connect({
16
+    host: config.ip,
17
+    port: config.port,
18
+    username: config.username,
19
+    password: config.password
20
+  }).then(() => {
21
+    console.log("-----先执行删除服务器文件-----")
22
+    return sftp.rmdir(config.path, true);
23
+  }).then(() => {
24
+    // 上传文件
25
+    console.log("-----开始上传-----")
26
+    return sftp.uploadDir(path.resolve(__dirname, config.buildPath), config.path);
27
+  }).then((data) => {
28
+    console.log("-----上传完成-----");
29
+    sftp.end();
30
+  }).catch((err) => {
31
+    console.log(err, '-----失败-----');
32
+    sftp.end();
33
+  });
34
+}
35
+function runTask() {
36
+  //打包完成
37
+  if (shell.exec(`npm run build`).code == 0) {
38
+    console.log("-----打包成功-----");
39
+    //提交上传
40
+    connectSSh();
41
+  }
42
+}
43
+runTask()