seimin il y a 3 ans
Parent
commit
0ad9739731
4 fichiers modifiés avec 286 ajouts et 13 suppressions
  1. 196 12
      package-lock.json
  2. 4 1
      package.json
  3. 43 0
      upload/development.js
  4. 43 0
      upload/production.js

+ 196 - 12
package-lock.json

@@ -50,6 +50,7 @@
50 50
         "rimraf": "^2.6.0",
51 51
         "semver": "^5.3.0",
52 52
         "shelljs": "^0.7.6",
53
+        "ssh2-sftp-client": "^7.2.0",
53 54
         "stylus": "^0.54.5",
54 55
         "stylus-loader": "^2.1.1",
55 56
         "uglifyjs-webpack-plugin": "^1.1.1",
@@ -333,7 +334,7 @@
333 334
       "version": "0.2.4",
334 335
       "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
335 336
       "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
336
-      "optional": true,
337
+      "devOptional": true,
337 338
       "dependencies": {
338 339
         "safer-buffer": "~2.1.0"
339 340
       }
@@ -1450,7 +1451,7 @@
1450 1451
       "version": "1.0.2",
1451 1452
       "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
1452 1453
       "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
1453
-      "optional": true,
1454
+      "devOptional": true,
1454 1455
       "dependencies": {
1455 1456
         "tweetnacl": "^0.14.3"
1456 1457
       }
@@ -2513,6 +2514,20 @@
2513 2514
         "js-yaml": "bin/js-yaml.js"
2514 2515
       }
2515 2516
     },
2517
+    "node_modules/cpu-features": {
2518
+      "version": "0.0.2",
2519
+      "resolved": "https://registry.npmmirror.com/cpu-features/download/cpu-features-0.0.2.tgz",
2520
+      "integrity": "sha1-n2NhVvEVX9BL26oCi7PC++886no=",
2521
+      "dev": true,
2522
+      "hasInstallScript": true,
2523
+      "optional": true,
2524
+      "dependencies": {
2525
+        "nan": "^2.14.1"
2526
+      },
2527
+      "engines": {
2528
+        "node": ">=8.0.0"
2529
+      }
2530
+    },
2516 2531
     "node_modules/create-ecdh": {
2517 2532
       "version": "4.0.3",
2518 2533
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz",
@@ -4257,6 +4272,12 @@
4257 4272
       "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=",
4258 4273
       "dev": true
4259 4274
     },
4275
+    "node_modules/err-code": {
4276
+      "version": "2.0.3",
4277
+      "resolved": "https://registry.npmmirror.com/err-code/download/err-code-2.0.3.tgz",
4278
+      "integrity": "sha1-I8Lzt1b/38YI0w4nyalBAkgH5/k=",
4279
+      "dev": true
4280
+    },
4260 4281
     "node_modules/errno": {
4261 4282
       "version": "0.1.7",
4262 4283
       "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz",
@@ -7721,9 +7742,9 @@
7721 7742
       "integrity": "sha1-QukiKxAbyoLlup1aes9KFMDyY9A="
7722 7743
     },
7723 7744
     "node_modules/nan": {
7724
-      "version": "2.14.0",
7725
-      "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz",
7726
-      "integrity": "sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=",
7745
+      "version": "2.15.0",
7746
+      "resolved": "https://registry.npmmirror.com/nan/download/nan-2.15.0.tgz",
7747
+      "integrity": "sha1-PzSkc/8Y4VwbVia2KQO1rW5mX+4=",
7727 7748
       "optional": true
7728 7749
     },
7729 7750
     "node_modules/nanomatch": {
@@ -11521,6 +11542,19 @@
11521 11542
       "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
11522 11543
       "dev": true
11523 11544
     },
11545
+    "node_modules/promise-retry": {
11546
+      "version": "2.0.1",
11547
+      "resolved": "https://registry.npmmirror.com/promise-retry/download/promise-retry-2.0.1.tgz",
11548
+      "integrity": "sha1-/3R6E2IKtXumiPX8Z4VUEMNw2iI=",
11549
+      "dev": true,
11550
+      "dependencies": {
11551
+        "err-code": "^2.0.2",
11552
+        "retry": "^0.12.0"
11553
+      },
11554
+      "engines": {
11555
+        "node": ">=10"
11556
+      }
11557
+    },
11524 11558
     "node_modules/proxy-addr": {
11525 11559
       "version": "2.0.6",
11526 11560
       "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz",
@@ -12212,6 +12246,15 @@
12212 12246
         "node": ">=0.12"
12213 12247
       }
12214 12248
     },
12249
+    "node_modules/retry": {
12250
+      "version": "0.12.0",
12251
+      "resolved": "https://registry.npmmirror.com/retry/download/retry-0.12.0.tgz",
12252
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
12253
+      "dev": true,
12254
+      "engines": {
12255
+        "node": ">= 4"
12256
+      }
12257
+    },
12215 12258
     "node_modules/rgb-regex": {
12216 12259
       "version": "1.0.1",
12217 12260
       "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
@@ -12954,6 +12997,67 @@
12954 12997
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
12955 12998
       "dev": true
12956 12999
     },
13000
+    "node_modules/ssh2": {
13001
+      "version": "1.5.0",
13002
+      "resolved": "https://registry.npmmirror.com/ssh2/download/ssh2-1.5.0.tgz",
13003
+      "integrity": "sha1-TcVZupihy7Qg6NQpmN/jXQ7akrw=",
13004
+      "dev": true,
13005
+      "hasInstallScript": true,
13006
+      "dependencies": {
13007
+        "asn1": "^0.2.4",
13008
+        "bcrypt-pbkdf": "^1.0.2"
13009
+      },
13010
+      "engines": {
13011
+        "node": ">=10.16.0"
13012
+      },
13013
+      "optionalDependencies": {
13014
+        "cpu-features": "0.0.2",
13015
+        "nan": "^2.15.0"
13016
+      }
13017
+    },
13018
+    "node_modules/ssh2-sftp-client": {
13019
+      "version": "7.2.0",
13020
+      "resolved": "https://registry.npmmirror.com/ssh2-sftp-client/download/ssh2-sftp-client-7.2.0.tgz",
13021
+      "integrity": "sha512-h850dHBeLuKfL9uTQ7y11p8QA687Sr057+Q1paB7dMuO4GDtNwxj/CPwJmvIM5BCzEuNrWf9CnMnIdC23TxzcA==",
13022
+      "dev": true,
13023
+      "dependencies": {
13024
+        "concat-stream": "^2.0.0",
13025
+        "promise-retry": "^2.0.1",
13026
+        "ssh2": "^1.5.0"
13027
+      },
13028
+      "engines": {
13029
+        "node": ">=10.24.1"
13030
+      }
13031
+    },
13032
+    "node_modules/ssh2-sftp-client/node_modules/concat-stream": {
13033
+      "version": "2.0.0",
13034
+      "resolved": "https://registry.npmmirror.com/concat-stream/download/concat-stream-2.0.0.tgz",
13035
+      "integrity": "sha1-QUz1r3kKSMYKub5FJ9VtXkETPLE=",
13036
+      "dev": true,
13037
+      "engines": [
13038
+        "node >= 6.0"
13039
+      ],
13040
+      "dependencies": {
13041
+        "buffer-from": "^1.0.0",
13042
+        "inherits": "^2.0.3",
13043
+        "readable-stream": "^3.0.2",
13044
+        "typedarray": "^0.0.6"
13045
+      }
13046
+    },
13047
+    "node_modules/ssh2-sftp-client/node_modules/readable-stream": {
13048
+      "version": "3.6.0",
13049
+      "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",
13050
+      "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
13051
+      "dev": true,
13052
+      "dependencies": {
13053
+        "inherits": "^2.0.3",
13054
+        "string_decoder": "^1.1.1",
13055
+        "util-deprecate": "^1.0.1"
13056
+      },
13057
+      "engines": {
13058
+        "node": ">= 6"
13059
+      }
13060
+    },
12957 13061
     "node_modules/sshpk": {
12958 13062
       "version": "1.16.1",
12959 13063
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -13591,7 +13695,7 @@
13591 13695
       "version": "0.14.5",
13592 13696
       "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz?cache=0&sync_timestamp=1581365004105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz",
13593 13697
       "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
13594
-      "optional": true
13698
+      "devOptional": true
13595 13699
     },
13596 13700
     "node_modules/type": {
13597 13701
       "version": "1.2.0",
@@ -15100,7 +15204,7 @@
15100 15204
       "version": "0.2.4",
15101 15205
       "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
15102 15206
       "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
15103
-      "optional": true,
15207
+      "devOptional": true,
15104 15208
       "requires": {
15105 15209
         "safer-buffer": "~2.1.0"
15106 15210
       }
@@ -16160,7 +16264,7 @@
16160 16264
       "version": "1.0.2",
16161 16265
       "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
16162 16266
       "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
16163
-      "optional": true,
16267
+      "devOptional": true,
16164 16268
       "requires": {
16165 16269
         "tweetnacl": "^0.14.3"
16166 16270
       }
@@ -17079,6 +17183,16 @@
17079 17183
         }
17080 17184
       }
17081 17185
     },
17186
+    "cpu-features": {
17187
+      "version": "0.0.2",
17188
+      "resolved": "https://registry.npmmirror.com/cpu-features/download/cpu-features-0.0.2.tgz",
17189
+      "integrity": "sha1-n2NhVvEVX9BL26oCi7PC++886no=",
17190
+      "dev": true,
17191
+      "optional": true,
17192
+      "requires": {
17193
+        "nan": "^2.14.1"
17194
+      }
17195
+    },
17082 17196
     "create-ecdh": {
17083 17197
       "version": "4.0.3",
17084 17198
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz",
@@ -18578,6 +18692,12 @@
18578 18692
       "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=",
18579 18693
       "dev": true
18580 18694
     },
18695
+    "err-code": {
18696
+      "version": "2.0.3",
18697
+      "resolved": "https://registry.npmmirror.com/err-code/download/err-code-2.0.3.tgz",
18698
+      "integrity": "sha1-I8Lzt1b/38YI0w4nyalBAkgH5/k=",
18699
+      "dev": true
18700
+    },
18581 18701
     "errno": {
18582 18702
       "version": "0.1.7",
18583 18703
       "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz",
@@ -21367,9 +21487,9 @@
21367 21487
       "integrity": "sha1-QukiKxAbyoLlup1aes9KFMDyY9A="
21368 21488
     },
21369 21489
     "nan": {
21370
-      "version": "2.14.0",
21371
-      "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz",
21372
-      "integrity": "sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=",
21490
+      "version": "2.15.0",
21491
+      "resolved": "https://registry.npmmirror.com/nan/download/nan-2.15.0.tgz",
21492
+      "integrity": "sha1-PzSkc/8Y4VwbVia2KQO1rW5mX+4=",
21373 21493
       "optional": true
21374 21494
     },
21375 21495
     "nanomatch": {
@@ -24549,6 +24669,16 @@
24549 24669
       "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
24550 24670
       "dev": true
24551 24671
     },
24672
+    "promise-retry": {
24673
+      "version": "2.0.1",
24674
+      "resolved": "https://registry.npmmirror.com/promise-retry/download/promise-retry-2.0.1.tgz",
24675
+      "integrity": "sha1-/3R6E2IKtXumiPX8Z4VUEMNw2iI=",
24676
+      "dev": true,
24677
+      "requires": {
24678
+        "err-code": "^2.0.2",
24679
+        "retry": "^0.12.0"
24680
+      }
24681
+    },
24552 24682
     "proxy-addr": {
24553 24683
       "version": "2.0.6",
24554 24684
       "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz",
@@ -25116,6 +25246,12 @@
25116 25246
       "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz",
25117 25247
       "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w="
25118 25248
     },
25249
+    "retry": {
25250
+      "version": "0.12.0",
25251
+      "resolved": "https://registry.npmmirror.com/retry/download/retry-0.12.0.tgz",
25252
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
25253
+      "dev": true
25254
+    },
25119 25255
     "rgb-regex": {
25120 25256
       "version": "1.0.1",
25121 25257
       "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
@@ -25777,6 +25913,54 @@
25777 25913
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
25778 25914
       "dev": true
25779 25915
     },
25916
+    "ssh2": {
25917
+      "version": "1.5.0",
25918
+      "resolved": "https://registry.npmmirror.com/ssh2/download/ssh2-1.5.0.tgz",
25919
+      "integrity": "sha1-TcVZupihy7Qg6NQpmN/jXQ7akrw=",
25920
+      "dev": true,
25921
+      "requires": {
25922
+        "asn1": "^0.2.4",
25923
+        "bcrypt-pbkdf": "^1.0.2",
25924
+        "cpu-features": "0.0.2",
25925
+        "nan": "^2.15.0"
25926
+      }
25927
+    },
25928
+    "ssh2-sftp-client": {
25929
+      "version": "7.2.0",
25930
+      "resolved": "https://registry.npmmirror.com/ssh2-sftp-client/download/ssh2-sftp-client-7.2.0.tgz",
25931
+      "integrity": "sha512-h850dHBeLuKfL9uTQ7y11p8QA687Sr057+Q1paB7dMuO4GDtNwxj/CPwJmvIM5BCzEuNrWf9CnMnIdC23TxzcA==",
25932
+      "dev": true,
25933
+      "requires": {
25934
+        "concat-stream": "^2.0.0",
25935
+        "promise-retry": "^2.0.1",
25936
+        "ssh2": "^1.5.0"
25937
+      },
25938
+      "dependencies": {
25939
+        "concat-stream": {
25940
+          "version": "2.0.0",
25941
+          "resolved": "https://registry.npmmirror.com/concat-stream/download/concat-stream-2.0.0.tgz",
25942
+          "integrity": "sha1-QUz1r3kKSMYKub5FJ9VtXkETPLE=",
25943
+          "dev": true,
25944
+          "requires": {
25945
+            "buffer-from": "^1.0.0",
25946
+            "inherits": "^2.0.3",
25947
+            "readable-stream": "^3.0.2",
25948
+            "typedarray": "^0.0.6"
25949
+          }
25950
+        },
25951
+        "readable-stream": {
25952
+          "version": "3.6.0",
25953
+          "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",
25954
+          "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
25955
+          "dev": true,
25956
+          "requires": {
25957
+            "inherits": "^2.0.3",
25958
+            "string_decoder": "^1.1.1",
25959
+            "util-deprecate": "^1.0.1"
25960
+          }
25961
+        }
25962
+      }
25963
+    },
25780 25964
     "sshpk": {
25781 25965
       "version": "1.16.1",
25782 25966
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -26292,7 +26476,7 @@
26292 26476
       "version": "0.14.5",
26293 26477
       "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz?cache=0&sync_timestamp=1581365004105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz",
26294 26478
       "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
26295
-      "optional": true
26479
+      "devOptional": true
26296 26480
     },
26297 26481
     "type": {
26298 26482
       "version": "1.2.0",

+ 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",
@@ -55,6 +57,7 @@
55 57
     "rimraf": "^2.6.0",
56 58
     "semver": "^5.3.0",
57 59
     "shelljs": "^0.7.6",
60
+    "ssh2-sftp-client": "^7.2.0",
58 61
     "stylus": "^0.54.5",
59 62
     "stylus-loader": "^2.1.1",
60 63
     "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/userApp', // 上传地址,删除地址
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/userApp', // 上传地址,删除地址
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()