mirror of
https://github.com/psychopy/psychojs.git
synced 2025-05-10 02:30:53 +00:00
60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
const { buildSync, build } = require("esbuild");
|
|
const { glsl } = require("esbuild-plugin-glsl");
|
|
const pkg = require("../package.json");
|
|
|
|
const versionMaybe = process.env.npm_config_outver;
|
|
const dirMaybe = process.env.npm_config_outdir;
|
|
const [, , , dir = dirMaybe || "out", version = versionMaybe || pkg.version] = process.argv;
|
|
let shouldWatchDir = false;
|
|
|
|
for (var i = 0; i < process.argv.length; i++) {
|
|
if (process.argv[i] === '-w') {
|
|
shouldWatchDir = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
[
|
|
// The ESM bundle
|
|
{
|
|
format: "esm",
|
|
legalComments: "external",
|
|
outfile: `./${dir}/psychojs-${version}.js`,
|
|
},
|
|
// The IIFE
|
|
{
|
|
globalName: "PsychoJS",
|
|
legalComments: "none",
|
|
outfile: `./${dir}/psychojs-${version}.iife.js`,
|
|
},
|
|
].forEach(function(options)
|
|
{
|
|
build({ ...this, ...options })
|
|
.then(()=> {
|
|
if (shouldWatchDir) {
|
|
console.log('watching...')
|
|
}
|
|
});
|
|
}, {
|
|
// Shared options
|
|
banner: {
|
|
js: `/*! For license information please see psychojs-${version}.js.LEGAL.txt */`,
|
|
},
|
|
bundle: true,
|
|
watch: shouldWatchDir,
|
|
sourcemap: true,
|
|
entryPoints: ["src/index.js"],
|
|
minifySyntax: true,
|
|
minifyWhitespace: true,
|
|
target: [
|
|
// https://github.com/evanw/esbuild/issues/121#issuecomment-646956379
|
|
"es2017",
|
|
"node14",
|
|
],
|
|
plugins: [
|
|
glsl({
|
|
minify: true
|
|
})
|
|
]
|
|
});
|