12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- diff --git a/node/index.js b/node/index.js
- index a9f2f6d5f3394329fcf8bc06af549030c01167a5..b92cc804adb694dbb17ee48368f13a03dd729267 100644
- --- a/node/index.js
- +++ b/node/index.js
- @@ -1,27 +1,32 @@
- -let parts = [process.platform, process.arch];
- -if (process.platform === 'linux') {
- - const { MUSL, family } = require('detect-libc');
- - if (family === MUSL) {
- - parts.push('musl');
- - } else if (process.arch === 'arm') {
- - parts.push('gnueabihf');
- - } else {
- - parts.push('gnu');
- - }
- -} else if (process.platform === 'win32') {
- - parts.push('msvc');
- -}
- +function loadPackage() {
- + if (process.platform === "linux") {
- + let { MUSL, GLIBC, family, familySync } = require("detect-libc");
- + // Bun polyfills `detect-libc` in compiled binaries. We rely on
- + // detect-libc@1.0.3 but the polyfilled version is 2.x. In detect-libc@2x
- + // there is a `familySync` function that we can use instead.
- + if (typeof familySync === 'function') family = familySync()
-
- -if (process.env.CSS_TRANSFORMER_WASM) {
- - module.exports = require(`../pkg`);
- -} else {
- - try {
- - module.exports = require(`lightningcss-${parts.join('-')}`);
- - } catch (err) {
- - module.exports = require(`../lightningcss.${parts.join('-')}.node`);
- + if (family === MUSL) {
- + return require(`lightningcss-${process.platform}-${process.arch}-musl`);
- + } else if (family === GLIBC) {
- + if (process.arch === "arm") {
- + return require(`lightningcss-${process.platform}-${process.arch}-gnueabihf`);
- + } else {
- + return require(`lightningcss-${process.platform}-${process.arch}-gnu`);
- + }
- + } else {
- + throw new Error(
- + `Unsupported libc on: ${process.platform}-${process.arch}`
- + );
- + }
- + } else if (process.platform === "win32") {
- + return require(`lightningcss-${process.platform}-${process.arch}-msvc`);
- + } else {
- + return require(`lightningcss-${process.platform}-${process.arch}`);
- }
- }
-
- -module.exports.browserslistToTargets = require('./browserslistToTargets');
- -module.exports.composeVisitors = require('./composeVisitors');
- -module.exports.Features = require('./flags').Features;
- +module.exports = loadPackage();
- +module.exports.browserslistToTargets = require("./browserslistToTargets");
- +module.exports.composeVisitors = require("./composeVisitors");
- +module.exports.Features = require("./flags").Features;
|