In my project's shared npm package are included both my database models and some code that I'd like a client, bundled with Lasso, to be able to access. So I figured I could make the model only conditionally required, right?
const browser =
typeof window !== 'undefined' ||
process.browser ||
process.env.IN_BROWSER === '1'
module.exports = {
config: require('./config'),
models: browser ? null : require('./models'),
}
Running marko-starter build
, I see that browser == true
, but the Lasso bundling still fails on code in models
, indicating that the module is getting required regardless. Bummer.
The right way to solve this, of course, would be to use the browser field spec which Lasso ostensibly respects, but that doesn't seem to be working, and my requests for help have fallen on deaf ears. The Marko community is mostly very helpful people, but unfortunately it's a community of like four people that work for eBay.
So I suppose I'll now maintain two common packages, one browser-compatible, one not.