From 9468e66706013c05cf299e18240b7eb592bacdba Mon Sep 17 00:00:00 2001 From: liujiangnan <695541723@qq.com> Date: Wed, 4 Sep 2019 22:45:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=89=93=E5=8C=85=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular.json | 2 +- bin/publish.js | 115 ++++++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 100 ++++++++++++++++++++++++++++++++++++++-- package.json | 2 + publish/.keep | 0 5 files changed, 213 insertions(+), 6 deletions(-) create mode 100644 bin/publish.js create mode 100644 publish/.keep diff --git a/angular.json b/angular.json index 2633fea..0aaaa7a 100644 --- a/angular.json +++ b/angular.json @@ -17,7 +17,7 @@ "build": { "builder": "@angular-devkit/build-angular:browser", "options": { - "outputPath": "dist/ng-one", + "outputPath": "dist", "index": "src/index.html", "main": "src/main.ts", "polyfills": "src/polyfills.ts", diff --git a/bin/publish.js b/bin/publish.js new file mode 100644 index 0000000..4eb6931 --- /dev/null +++ b/bin/publish.js @@ -0,0 +1,115 @@ +/**** + * 批é‡ç¼–译打包模æ¿å·¥å…· + * è¿è¡Œ npm run publish T_01 å‘½ä»¤æ¥æ‰“包T_01æ¨¡æ¿ + * è¿è¡Œ npm run publish T_01,T_02,T_03,T_04 命令æ¥åˆ†åˆ«æ‰“包 T_01,T_02,T_03,T_04 这四个模æ¿ï¼Œæ³¨æ„逗å·è¦ç”¨è‹±æ–‡çš„ + * è¿è¡Œ npm run publish all å‘½ä»¤æ¥æ‰“åŒ…æ‰€æœ‰æ¨¡æ¿ + */ + +const spawn = require('child_process').spawn; +const path = require("path"); +const fs = require("fs"); +const os = require('os'); +const compressing = require("compressing"); + +//Linux系统上'Linux' +//macOS 系统上'Darwin' +//Windows系统上'Windows_NT' +let sysType = os.type(); + +Date.prototype.Format = function(fmt) { + var o = { + "M+" : this.getMonth() + 1, + "d+" : this.getDate(), + "h+" : this.getHours(), + "m+" : this.getMinutes(), + "s+" : this.getSeconds(), + "q+" : Math.floor((this.getMonth() + 3) / 3), + "S" : this.getMilliseconds() + }; + if (/(y+)/.test(fmt)) + fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + return fmt; +} + +function clean(zipPath){ + if(fs.existsSync(zipPath)){ + fs.unlinkSync(zipPath); + } +} + +const runSpawn = async function (){ + + await new Promise(function(resolve,reject){ + + let pkg = require("../package.json"); + + let ls; + if(sysType==="Windows_NT"){ + //ng build --prod --build--optimizer --base-href /ng-one/ + ls = spawn("cmd.exe", ['/c', 'ng', 'build', '--prod', '--build--optimizer', '--base-href', `/${pkg.name}/`] ); + }else{ + ls = spawn("ng", ['build', '--prod', '--build--optimizer', '--base-href', `/${pkg.name}/`] ); + } + + ls.stdout.on('data', (data) => { + console.log(` ${data}`); + }); + + ls.stderr.on('data', (data) => { + console.log(`stderr: ${data}`); + reject(); + }); + + ls.on('close', (code) => { + console.log(`child process exited with code ${code}`); + //è¦åŽ‹ç¼©çš„ç›®å½• + let zippath = path.resolve(__dirname,"../dist"); + //åŽ‹ç¼©åŒ…çš„å˜æ”¾ç›®å½• + let date = new Date(); + let zipname = pkg.name+"_"+date.Format("yyyyMMdd hh-mm-ss"); + let zipdir = path.resolve(__dirname,"../publish/"+zipname+".zip"); + clean(zipdir); //åˆ é™¤åŽŸæœ‰çš„åŒ… + + const tarStream = new compressing.zip.Stream(); + fs.readdir(zippath,function(err,files){ + if(err){ + console.log("======文件打开异常======"); + console.log(err); + reject(); + } + for(let i=0;i<files.length;i++){ + tarStream.addEntry(zippath+"/"+files[i]); + } + let writeStream = fs.createWriteStream(zipdir); + tarStream.pipe(writeStream); + writeStream.on('close', () => { + console.log(`æ¨¡æ¿ ${pkg.name} 打包已完æˆï¼`); + resolve(); + }) + }); + + }); + + }); +} + +// let projects = ""; +// if(process.argv.length<3){ +// console.log("ç¼ºå°‘å‚æ•°"); +// return; +// } +// projects = process.argv[2]; + +let exec = async function(){ + //åŽ‹ç¼©æ¨¡æ¿ + await runSpawn(); +} + +exec(); + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3a19fdb..a94c2bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2517,6 +2517,15 @@ "underscore": "~1.4.4" } }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", @@ -2776,7 +2785,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, "requires": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" @@ -2785,14 +2793,17 @@ "buffer-alloc-unsafe": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" }, "buffer-from": { "version": "1.1.1", @@ -3225,6 +3236,21 @@ "mime-db": ">= 1.40.0 < 2" } }, + "compressing": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/compressing/-/compressing-1.4.0.tgz", + "integrity": "sha512-7Y6aU45Ud0y7sxr8szQ91dJPHIENKmG0zD9bcLSZSGf67Xap/J8pqFGCklnrFavkl5taulZb7YvSa557mb732A==", + "requires": { + "flushwritable": "^1.0.0", + "get-ready": "^1.0.0", + "mkdirp": "^0.5.1", + "pump": "^3.0.0", + "streamifier": "^0.1.1", + "tar-stream": "^1.5.2", + "yauzl": "^2.7.0", + "yazl": "^2.4.2" + } + }, "compression": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", @@ -4638,6 +4664,14 @@ "websocket-driver": ">=0.5.1" } }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, "figgy-pudding": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", @@ -4736,6 +4770,11 @@ "readable-stream": "^2.3.6" } }, + "flushwritable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz", + "integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg=" + }, "follow-redirects": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.8.1.tgz", @@ -4840,6 +4879,11 @@ "null-check": "^1.0.0" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs-minipass": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", @@ -11667,6 +11711,11 @@ "sha.js": "^2.4.8" } }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -13479,6 +13528,11 @@ "resolved": "https://registry.npmjs.org/stream-wormhole/-/stream-wormhole-1.1.0.tgz", "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==" }, + "streamifier": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz", + "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=" + }, "streamroller": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", @@ -13653,6 +13707,20 @@ "inherits": "2" } }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, "terser": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/terser/-/terser-4.2.1.tgz", @@ -13753,6 +13821,11 @@ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", @@ -14986,6 +15059,23 @@ } } }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "requires": { + "buffer-crc32": "~0.2.3" + } + }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", diff --git a/package.json b/package.json index 69174ff..f9a70b9 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "ng": "ng", "start": "ng serve", "build": "ng build --prod --build--optimizer --base-href /ng-one/", + "publish": "node ./bin/publish.js", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" @@ -33,6 +34,7 @@ "animate.css": "^3.7.0", "bootstrap": "^4.1.1", "browser-image-compression": "^1.0.5", + "compressing": "^1.4.0", "core-js": "^2.6.1", "cropperjs": "1.4.1", "css-element-queries": "^1.0.2", diff --git a/publish/.keep b/publish/.keep new file mode 100644 index 0000000..e69de29 -- 2.21.0