112 lines
4.3 KiB
JavaScript
112 lines
4.3 KiB
JavaScript
/**
|
|
* prepare the files to be packed
|
|
*/
|
|
|
|
const pack = require('../../package.json')
|
|
const os = require('os')
|
|
const { resolve } = require('path')
|
|
const { version } = pack
|
|
const { mkdir, rm, exec, echo, cp } = require('shelljs')
|
|
const dir = 'dist/v' + version
|
|
const cwd = process.cwd()
|
|
|
|
const platform = os.platform()
|
|
const isWin = platform === 'win32'
|
|
|
|
pack.main = 'app.js'
|
|
delete pack.scripts
|
|
delete pack.standard
|
|
delete pack.files
|
|
delete pack.engines
|
|
delete pack.preferGlobal
|
|
|
|
if (isWin) {
|
|
delete pack.dependencies['node-bash']
|
|
} else {
|
|
delete pack.dependencies['node-powershell']
|
|
}
|
|
|
|
echo('start pack prepare')
|
|
// echo('install test deps')
|
|
// exec(`PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D -E playwright@1.28.1 --no-save && npm i -D -E @playwright/test@1.28.1 --no-save`)
|
|
const timeStart = +new Date()
|
|
rm('-rf', dir)
|
|
rm('-rf', 'dist/latest')
|
|
|
|
mkdir('-p', dir)
|
|
mkdir('-p', 'dist/latest')
|
|
cp('-r', 'src/app', 'work/')
|
|
rm('-rf', 'work/app/user-config.json')
|
|
rm('-rf', 'work/app/localstorage.json')
|
|
rm('-rf', 'work/app/nohup.out')
|
|
rm('-rf', 'work/app/assets/js/index*')
|
|
rm('-rf', 'work/app/assets/js/*.txt')
|
|
rm('-rf', 'node_modules/cpu-features')
|
|
|
|
require('fs').writeFileSync(
|
|
resolve(__dirname, '../../work/app/package.json'),
|
|
JSON.stringify(
|
|
pack, null, 2
|
|
)
|
|
)
|
|
|
|
exec(`cd work/app && npm i --omit=dev && cd ${cwd}`)
|
|
rm('-rf', 'work/app/node_modules/.bin')
|
|
// Remove axios browser/ESM builds and unnecessary files (keep only lib/ and node CJS)
|
|
rm('-rf', 'work/app/node_modules/axios/dist/esm')
|
|
rm('-rf', 'work/app/node_modules/axios/dist/browser')
|
|
rm('-rf', 'work/app/node_modules/axios/dist/*.js')
|
|
rm('-rf', 'work/app/node_modules/axios/dist/*.map')
|
|
rm('-rf', 'work/app/node_modules/axios/dist/node/*.map')
|
|
rm('-rf', 'work/app/node_modules/axios/index.d.cts')
|
|
rm('-rf', 'work/app/node_modules/axios/lib')
|
|
|
|
// Remove cpu-features after npm prune to prevent rebuild issues
|
|
rm('-rf', 'node_modules/cpu-features')
|
|
rm('-rf', 'work/app/node_modules/cpu-features')
|
|
|
|
// Clean up node-pty platform-specific files to reduce bundle size
|
|
if (isWin) {
|
|
// On Windows, remove Unix-specific files
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/unixTerminal.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/unixTerminal.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/unixTerminal.test.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/unixTerminal.test.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/build/pty.target.mk')
|
|
rm('-rf', 'work/app/node_modules/node-pty/build/spawn-helper.target.mk')
|
|
rm('-rf', 'work/app/node_modules/node-pty/build/binding.Makefile')
|
|
rm('-rf', 'work/app/node_modules/node-pty/build/gyp-mac-tool')
|
|
} else {
|
|
// On Linux/Mac, remove Windows-specific files
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/conpty_console_list_agent.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/conpty_console_list_agent.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsConoutConnection.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsConoutConnection.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsPtyAgent.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsPtyAgent.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsPtyAgent.test.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsPtyAgent.test.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsTerminal.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsTerminal.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsTerminal.test.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/windowsTerminal.test.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/deps/winpty')
|
|
}
|
|
|
|
// Remove all test files from node-pty to reduce bundle size
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/*.test.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/*.test.js.map')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/testUtils.test.js')
|
|
rm('-rf', 'work/app/node_modules/node-pty/lib/testUtils.test.js.map')
|
|
|
|
// yarn auto clean
|
|
cp('-r', 'build/bin/.yarnclean', 'work/app/')
|
|
exec(`cd work/app && yarn generate-lock-entry > yarn.lock && yarn autoclean --force && cd ${cwd}`)
|
|
rm('-rf', 'work/app/.yarnclean')
|
|
rm('-rf', 'work/app/package-lock.json')
|
|
rm('-rf', 'work/app/yarn.lock')
|
|
require('./clean-empty-folders').main()
|
|
|
|
const endTime = +new Date()
|
|
echo(`done pack prepare in ${(endTime - timeStart) / 1000} s`)
|