Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

numjs not compatible with vitejs bundler #107

Open
mojv opened this issue Nov 13, 2021 · 3 comments
Open

numjs not compatible with vitejs bundler #107

mojv opened this issue Nov 13, 2021 · 3 comments

Comments

@mojv
Copy link

mojv commented Nov 13, 2021

Would be great if you guys make numjs compatible with vitejs (which is insanely fast).

I just created a blank project and just try to add it in the main.js file like so:

// src/main.js
import { createApp, reactive } from 'vue'
import App from './App.vue'
import * as nj from 'numjs'

const app = createApp(App);
app.config.globalProperties.$nj = nj; 

app.mount('#app');

browser shows this error:

image

image

thanks a lot

@grimmer0125
Copy link
Collaborator

grimmer0125 commented Nov 15, 2021

@mojv,

I made a forked @d4c/numjs package, and there are three output formats inside.
I tried to use this with Vite react app and got the same error when using import nj from '@d4c/numjs'.
However, this one import nj from "@d4c/numjs/build/module/numjs.min.js works. Please try it.

numjs.min.js is originally built for CDN for the below usages:

import nj from 'https://cdn.jsdelivr.net/npm/@d4c/numjs/build/module/numjs.min.js'; // or 
  <script type="module">
    import nj from 'https://cdn.jsdelivr.net/npm/@d4c/numjs/build/module/numjs.min.js';
  <script>

It is a work-around way. I may improve it later since using import nj from '@d4c/numjs' is always shorter and better.

@mojv
Copy link
Author

mojv commented Nov 16, 2021

i tried and worked, is a shame though cause this will load the hole library in the broewser, whereas with importing specific modules, when building, it will only bundle the code that is being used. anyways, not much of a big deal, numjs is not that heavy

@grimmer0125
Copy link
Collaborator

grimmer0125 commented Nov 16, 2021

i tried and worked, is a shame though cause this will load the hole library in the broewser, whereas with importing specific modules, when building, it will only bundle the code that is being used. anyways, not much of a big deal, numjs is not that heavy

The issue is some ndarray related packages uses by numjs are not designed for tree-shakable and use some Node.js library/CommonJS inside. So it needs at least some bundler/transpiler to do some things. It takes some time to config/refacor them (polyfill or mock), either on numjs package side or the bundler/transpiler side of the numjs user.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants