1
Fork 0
photoview/ui/build.js

62 lines
1.4 KiB
JavaScript
Raw Normal View History

const fs = require('fs')
2021-02-25 13:23:22 +01:00
const esbuild = require('esbuild')
const bs = require('browser-sync').create()
const historyApiFallback = require('connect-history-api-fallback')
const production = process.env.NODE_ENV == 'production'
2021-02-25 13:23:22 +01:00
const watchMode = process.argv[2] == 'watch'
2021-02-25 13:23:22 +01:00
const esbuildOptions = {
entryPoints: ['src/index.js'],
2021-02-25 13:23:22 +01:00
publicPath: '/',
outdir: 'dist',
2021-02-25 13:23:22 +01:00
format: 'esm',
bundle: true,
platform: 'browser',
target: ['chrome58', 'firefox57', 'safari11', 'edge16'],
2021-02-25 13:23:22 +01:00
splitting: true,
minify: production,
sourcemap: !production,
loader: {
'.js': 'jsx',
2021-02-25 13:23:22 +01:00
'.svg': 'file',
'.woff': 'file',
'.woff2': 'file',
'.ttf': 'file',
'.eot': 'file',
'.png': 'file',
},
define: {
2021-02-25 13:23:22 +01:00
'process.env.PHOTOVIEW_API_ENDPOINT': '"http://localhost:4001/"',
'process.env.NODE_ENV': '"development"',
},
2021-02-25 13:23:22 +01:00
incremental: watchMode,
}
2021-02-25 13:23:22 +01:00
fs.rmdirSync('dist/', {
recursive: true,
})
fs.mkdirSync('dist/')
fs.copyFileSync('src/index.html', 'dist/index.html')
2021-02-25 13:23:22 +01:00
if (watchMode) {
let builderPromise = esbuild.build(esbuildOptions)
2021-02-25 13:23:22 +01:00
bs.init({
server: {
baseDir: './dist',
middleware: [historyApiFallback()],
},
port: 1234,
open: false,
})
bs.watch('src/**/*.js').on('change', async args => {
console.log('reloading', args)
builderPromise = (await builderPromise).rebuild()
bs.reload(args)
})
} else {
esbuild.buildSync(esbuildOptions)
}