uniapp 复制编译后sourcemap复制到工程内
sourcemap.js
const fs = require('fs');
const path = require('path');
/**
* 将/dist/dev/.sourcemap文件复制到/dist/dev/mp-toutiao/.sourcemap
*/
let triggerMove = false;
module.exports = async () => {
if (triggerMove) return;
triggerMove = true;
console.log('exec...');
// if (process.env.NODE_ENV == 'development') {
const basePath = path.join(__dirname, '../dist');
let OriginFilePath = `${basePath}/dev/.sourcemap`;
let CopyFilePath = `${basePath}/dev/mp-toutiao/.sourcemap`;
//判断要创建的文件夹(newFile)是否存在,不存在就创建一个
if (!fs.existsSync(CopyFilePath)) {
fs.mkdir(CopyFilePath, (err) => {
// console.log(err)
});
}
//传入路径
copyFiles(OriginFilePath, CopyFilePath);
// }
};
/**
* 文件从旧文件夹复制到新文件夹
* @param {string} OriginFilePath
* @param {string} CopyFilePath
*/
function copyFiles(OriginFilePath, CopyFilePath) {
//读取newFile文件夹下的文件
fs.readdir(OriginFilePath, { withFileTypes: true }, (err, files) => {
for (let file of files) {
//判断是否是文件夹,不是则直接复制文件到newFile中
if (!file.isDirectory()) {
//获取旧文件夹中要复制的文件
const OriginFile = path.resolve(OriginFilePath, file.name);
//获取新文件夹中复制的地方
const CopyFile = path.resolve(CopyFilePath, file.name);
//将文件从旧文件夹复制到新文件夹中
fs.copyFileSync(OriginFile, CopyFile);
} else {
//如果是文件夹就递归变量把最新的文件夹路径传过去
const CopyDirPath = path.resolve(CopyFilePath, file.name);
const OriginDirPath = path.resolve(OriginFilePath, file.name);
fs.mkdir(CopyDirPath, (err) => {});
// OriginFilePath = OriginPath
// CopyFilePath = DirPath
copyFiles(OriginDirPath, CopyDirPath);
}
}
});
}
vue.config.js
const fs = require('fs');
// const upload = require('./build/upload');
const sourcemap = require('./build/sourcemap');
const manifestPath = `${__dirname}/src/manifest.json`;
let Manifest = fs.readFileSync(manifestPath, {
encoding: 'utf-8',
});
function replaceManifest(path, value) {
const arr = path.split('.');
const len = arr.length;
const lastItem = arr[len - 1];
let i = 0;
let ManifestArr = Manifest.split(/\n/);
for (let index = 0; index < ManifestArr.length; index++) {
const item = ManifestArr[index];
if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
if (i === len) {
const hasComma = /,/.test(item);
ManifestArr[index] = item.replace(new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`), `"${lastItem}": ${value}${hasComma ? ',' : ''}`);
break;
}
}
Manifest = ManifestArr.join('\n');
}
// 读取环境变量内容
replaceManifest('name', `"${process.env.VUE_APP_NAME}"`);
replaceManifest('mp-toutiao.appid', `"${process.env.VUE_APP_APPID}"`);
fs.writeFileSync(manifestPath, Manifest, {
flag: 'w',
});
module.exports = {
transpileDependencies: ['@dcloudio/uni-ui', 'uview-ui'],
chainWebpack: (config) => {
// if (process.env.NODE_ENV === 'production') {
// config.plugin('done').use(require('webpack').ProgressPlugin, [
// {
// handler: (percentage, message, ...args) => {
// if (percentage === 1 && ['test', 'pre'].indexOf(process.env.VUE_APP_ENV) > -1) {
// // 上传小程序代码到mp后台,这里只有测试环境、预发环境才上传,其他手动上传
// upload();
// }
// },
// },
// ]);
// }
if (process.env.NODE_ENV === 'development') {
config.plugin('done').use(require('webpack').ProgressPlugin, [
{
handler: (percentage, message, ...args) => {
if (percentage === 1) {
sourcemap();
}
},
},
]);
}
},
};

浙公网安备 33010602011771号