123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- const fs = require('node:fs')
- const srcs = fs.readdirSync('../src/')
- const babelParser = require('@babel/parser')
- // console.log(srcs)
- const root = '../src'
- // srcs.forEach(file => {
- //
- // if(fs.statSync(`${root}/${file}`).isDirectory()) {
- //
- // }
- // if(/\.vue$/.test(file)) {
- // console.log(file)
- // }
- // })
- function getFiles(path) {
- const srcs = fs.readdirSync(path)
- let paths = []
- srcs.forEach(file => {
- const new_path = `${path}/${file}`
- if (fs.statSync(new_path).isDirectory()) {
- paths = paths.concat(getFiles(new_path))
- }
- if (/\.vue$/.test(new_path)) {
- paths.push(new_path)
- }
- })
- return paths
- }
- function uni2vueBase(file_path) {
- // const file = fs.readFileSync('../src/pages/automatic/automaticMy.vue').toString()
- const file = fs.readFileSync(file_path).toString()
- let isAdd = false
- let isImage = false
- let newFileTxt = ''
- file.split('\n').forEach((elm, index) => {
- let line = `${elm}`
- // uni.navigateTo --> this.$router.push
- if (line.indexOf('uni.navigateTo(') > -1) {
- isAdd = true
- line = line.replace(/uni\.navigateTo/g, 'this.$router.push')
- }
- if (isAdd && line.indexOf('url') > -1) {
- line = line.replace(/url/g, 'path')
- }
- if (line.indexOf(')') > -1) {
- isAdd = false
- }
- // rpx --> px
- if (line.indexOf('rpx') > -1) {
- line = line.replace(/([0-9]*)rpx/g, '$1px')
- }
- // view --> div
- if (line.indexOf('<view') > -1) {
- line = line.replace(/<view/g, '<div')
- }
- if (line.indexOf('</view') > -1) {
- line = line.replace(/<\/view/g, '</div')
- }
- if (/\sview\s{/.test(line)) {
- line = line.replace(/view/g, 'div')
- }
- // text --> span
- if (line.indexOf('<text') > -1) {
- line = line.replace(/<text/g, '<span')
- }
- if (line.indexOf('</text') > -1) {
- line = line.replace(/<\/text/g, '</span')
- }
- if (/\stext\s{/.test(line)) {
- line = line.replace(/text/g, 'span')
- }
- // 处理图片
- if (/<image/g.test(line)) {
- line = line.replace(/<image/g, '<img')
- isImage = true
- }
- if(isImage) {
- // 处理 src 内容
- // line = line.replace(/src="(.*)/g, '<image')
- }
- if (line.indexOf('</image') > -1) {
- line = line.replace(/<\/image/g, '</img')
- }
- if(/\/()>/.test(line)) {
- isImage = false
- }
- if (/\simage\s{/.test(line)) {
- line = line.replace(/image/g, 'img')
- }
- newFileTxt += `${line}\n`
- })
- // fs.writeFileSync(file_path.replace(/\.vue/g, '2.vue'), newFileTxt)
- fs.writeFileSync(file_path, newFileTxt)
- }
- function uniReplace2vue(file_path) {
- const file = fs.readFileSync(file_path).toString()
- let isAdd = false
- let newFileTxt = ''
- file.split('\n').forEach((elm, index) => {
- let line = `${elm}`
- // uni.navigateTo --> this.$router.push
- if (line.indexOf('this.$router.uni.redirectTo') > -1) {
- isAdd = true
- line = line.replace(/this\.\$router\.uni\.redirectTo/g, 'this.$router.replace')
- }
- if (isAdd && line.indexOf('url') > -1) {
- line = line.replace(/url/g, 'path')
- }
- if (line.indexOf(')') > -1) {
- isAdd = false
- }
- newFileTxt += `${line}\n`
- })
- fs.writeFileSync(file_path, newFileTxt)
- }
- function moveLine(file_path) {
- let file = fs.readFileSync(file_path).toString()
- let newFileTxt = ''
- if(/\n\n\n/g.test(file)) {
- newFileTxt = file.replace(/\n\n\n/g, '\n');
- }
- fs.writeFileSync(file_path, newFileTxt)
- }
- function setVue() {
- const files = getFiles(root)
- files.forEach(_filePath => {
- if (_filePath.indexOf('src/pages/parkingFee') > -1 || true) {
- // 基础转化
- uni2vueBase(_filePath)
- // 重定向
- uniReplace2vue(_filePath)
- // 删除多余的空行
- // moveLine(_filePath)
- }
- })
- }
- setVue()
|