| 29 | * - filename {String} 每个文件的文件名 |
| 30 | */ |
| 31 | const exportCode = async (codes) => { |
| 32 | const zip = new JSZip(); |
| 33 | const src = zip.folder('src'); |
| 34 | |
| 35 | for (let file of codes) { |
| 36 | src.file(file.filename, file.code); |
| 37 | } |
| 38 | |
| 39 | for (let file of defaultFiles) { |
| 40 | zip.file(file.filename, file.code); |
| 41 | } |
| 42 | |
| 43 | |
| 44 | let finalPkg = pkg; |
| 45 | let userPkg = codes.find(code => code.filename === 'package.json'); |
| 46 | |
| 47 | // 合并依赖,所有的package.json 单独处理 |
| 48 | if (userPkg) { |
| 49 | userPkg = JSON.parse(userPkg.code); |
| 50 | finalPkg = _.merge({}, finalPkg, userPkg); |
| 51 | } |
| 52 | |
| 53 | zip.file('package.json', JSON.stringify(finalPkg, null, 2)); |
| 54 | |
| 55 | const content = await zip.generateAsync({type: 'blob'}); |
| 56 | |
| 57 | download.downloadBlob( |
| 58 | 'demo.zip', |
| 59 | content |
| 60 | ); |
| 61 | }; |
| 62 | |
| 63 | export default exportCode; |