deploy.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. const fs = require("fs");
  2. const Path = require("path");
  3. const exec = require("child_process").exec;
  4. function changeName(needChangeFiles, callback) {
  5. needChangeFiles.map(fileName => {
  6. fileName = Path.resolve(fileName);
  7. let tmpFileName = `${fileName}-tmp`;
  8. let deployFileName = `${fileName}-deploy`;
  9. fs.rename(fileName, tmpFileName, function() {
  10. fs.rename(deployFileName, fileName, function() {
  11. fs.rename(tmpFileName, deployFileName, function() {});
  12. });
  13. });
  14. });
  15. callback && callback(needChangeFiles);
  16. }
  17. function upProjectVersion(fileName, callback) {
  18. let result;
  19. let data = fs.readFileSync(fileName, "utf-8");
  20. let jsonObj = JSON.parse(data);
  21. let nums = jsonObj.version.split(".");
  22. nums[nums.length - 1] = parseInt(nums[nums.length - 1]) + 1;
  23. jsonObj.version = nums.join(".");
  24. result = JSON.stringify(jsonObj, null, 3);
  25. fs.writeFile(fileName, result, function(err) {
  26. if (err) {
  27. console.log(err);
  28. } else {
  29. callback && callback();
  30. }
  31. });
  32. }
  33. function deployProject(callback) {
  34. exec("npm publish", function(err, stdout, stderr) {
  35. console.log(stdout);
  36. console.log("stderr:" + stderr);
  37. callback && callback();
  38. });
  39. }
  40. const deployType = process.argv[2];
  41. if ("base" === deployType) {
  42. console.log("发布项目基础包");
  43. let needChangeFiles = [
  44. "config/dev.env.js",
  45. "config/prod.env.js",
  46. "src/router/index.js",
  47. "mock/serverApi.json",
  48. ".npmignore",
  49. "package.json"
  50. ];
  51. upProjectVersion("./package.json-deploy", function() {
  52. changeName(needChangeFiles, function() {
  53. deployProject(function() {
  54. changeName(needChangeFiles);
  55. });
  56. });
  57. });
  58. } else if ("common" === deployType) {
  59. upProjectVersion("./package.json", function() {
  60. deployProject(function() {
  61. console.log("发布成功");
  62. });
  63. });
  64. } else {
  65. console.error("发布类型错误");
  66. }