#!/bin/bash # https://docs.sheetjs.com/docs/demos/frontend/bundler/webpack cd /tmp rm -rf sheetjs-webpack mkdir sheetjs-webpack cd sheetjs-webpack npm init -y npm i --save https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz cat >index.js <webpack.config.js <index.html <

SheetJS Presidents Demo

EOF npm i --save puppeteer express@4 cat >test.js < { await new Promise((res,rej) => setTimeout(res, 1000)); const browser = await puppeteer.launch(); const page = await browser.newPage(); page.on("console", msg => console.log("PAGE LOG:", msg.text())); await page.setViewport({width: 1920, height: 1080}); const client = await page.target().createCDPSession(); await client.send('Browser.setDownloadBehavior', { behavior: 'allow', downloadPath: require("path").resolve('./') }); await page.goto('http://localhost:7262/'); await page.click("#xport"); await new Promise((res,rej) => setTimeout(res, 1000)); await browser.close(); process.exit(); }); EOF ## Webpack 2.x npx -y webpack@2.x -p node test.js npx -y xlsx-cli Presidents.xlsx | head -n 3 rm -f index.min.js Presidents.xlsx ## Webpack 3.x npx -y webpack@3.x -p node test.js npx -y xlsx-cli Presidents.xlsx | head -n 3 rm -f index.min.js Presidents.xlsx ## Webpack 4.x and 5.x do not need to import the standalone build sed -i.bak 's#/dist/xlsx.full.min.js##g' index.js ## Webpack 4.x npm i --save webpack@4.x webpack-cli@4.x npx -y webpack --mode=production node test.js npx -y xlsx-cli Presidents.xlsx | head -n 3 rm -f index.min.js Presidents.xlsx ## Webpack 5.x sed -i.bak 's#"type": "commonjs"#"sheet": "js"#g' package.json npm i --save webpack@5.x webpack-cli@5.x npx -y webpack --mode=production node test.js npx -y xlsx-cli Presidents.xlsx | head -n 3 rm -f index.min.js Presidents.xlsx