简易切换小程序测试和生产环境appid和域名脚本

278 阅读1分钟

package.json

 "scripts": {
    "dev": "set NODE_ENV='development' && node script.env.js",
    "prod": "set NODE_ENV='production' && node script.env.js",
    "mac:dev": "export NODE_ENV='development' && node script.env.js",
    "mac:prod": "export NODE_ENV='production' && node script.env.js"
  },

script.env.js

const fs = require('fs');

const DEV = {
  appid: 'dev',
  host: 'https://dev.com'
};

const PROD = {
  appid: 'prod',
  host: 'https://prod.com',
  plugins: {
    "live-player-plugin":
    {
      "version": "1.0.17",
      "provider": "wx2b03c6e691cd7370"
    }
  }
};

const ITEM = process.env.NODE_ENV.indexOf('development') > -1 ? DEV : PROD;

// 例如只有生产环境有直播插件,修改app.json里面的插件
fs.readFile(`${process.cwd()}/app.json`, (err, data) => {
  if (err) throw err;
  let _data = JSON.parse(data.toString());
  if (process.env.NODE_ENV.indexOf('development') > -1) {
    delete _data.subpackages[0].plugins;
  } else {
    _data.subpackages[0].plugins = ITEM.plugins;
  }
  writeFile('/app.json', _data);
});

// 修改project.config.json里面的appid
fs.readFile(`${process.cwd()}/project.config.json`, (err, data) => {
  if (err) throw err;
  let _data = JSON.parse(data.toString());
  _data.appid = ITEM.appid;
  writeFile('/project.config.json', _data);
});

// 修改config.js里面的host
const HOSTSTR = `exports.serverURL = "${ITEM.host}";`;
fs.writeFile(`${process.cwd()}/config.js`, HOSTSTR, function(err) {
  if (err) throw err;
});

// 写文件
const writeFile = function(path, data) {
  let str = JSON.stringify(data, null, 2);
  fs.writeFile(`${process.cwd()}${path}`, str, function(err) {
    if (err) throw err;
  });
}
win 在控制台执行 npm run dev 或 npm run prod
mac 在控制台执行 npm run mac:dev 或 npm run mac:prod