之前用JQuery
写了一个简单的门户网站,没有使用webpack
之类的打包工具,但是有开发环境、测试环境和正式环境的api
地址切换,为了不用每次都手动修改,我用nodejs
写了一个小脚本用来修改文件内容。
文件列表:
dev.js //开发环境
test.js //测试环境
production.js //线上环境
package.json //npm init初始化或者手动创建 用来执行js
api.js //接口api地址,用来写入并全局使用的api.js
config.js //用来读取并修改的api.js
先看package.json
内容,用来执行三个环境的配置文件。
{
"name": "test",
"version": "1.0.0",
"description": "",
"scripts": {
"dev": "node dev",
"test": "node test",
"production": "node production"
},
"author": "",
"license": "ISC"
}
api.js
和config.js
文件内容相同:
var devApi = "http://192.168.0.197:9091";
var testApi = "http://192.168.0.197:9091";
var productionApi = "http://192.168.0.40/yueyawang-portal";
var api = productionApi
dev.js
文件内容:
//引入路径模块
const path = require("path");
//引入文件模块
const fs = require("fs");
//拼接用来读取的文件路径,当前路径加上config.js
let pathName = path.join(__dirname, "config.js")
//创建可读流
let rs = fs.createReadStream(pathName)
//创建可写流
let ws1 = fs.createWriteStream("api.js")
//设置文件编码
rs.setEncoding("utf8")
rs.on("data", function(chunk) {
let list = chunk.split(";") //这里为了简单,我用了分号来切割内容,正确的做法是用正则表达式来替换
list[list.length - 1] = "var api = devApi" //将内容修改为命令对应的配置
ws1.write(list.join(";")) //将数组转换为字符串,并写入可写流
})
rs.on("end", function() {
ws1.end() //文件读取完毕,结束写入。
})
test.js
和production.js
除了"var api = testApi"
和"var api = productionApi"
之外,与dev.js
内容相同。从这里可以看出,我是通过修改api
全局变量的赋值,来修改不同的环境所需要的api
的,把执行命令配置到Jenkins
,就可以了,不用每次部署都要手动修改api了。
配置命令:
npm run dev //开发环境
npm run test //测试环境
npm run production //线上环境
有帮助的话,点个赞呗!