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

babel 开启 runtime 之后并且 rollup preserveModules = rue 会导致输出的结构会多出一层 #109

Open
xiangxinji opened this issue Dec 16, 2022 · 8 comments

Comments

@xiangxinji
Copy link

No description provided.

@willson-wang
Copy link
Owner

babel runtime插件的作用只是添加help函数等,而rollup preserveModules = true的目的是为了保证,输出的文件是非bundle文件,也就是按原始文件目录输出,所以这里没太理解,你说的会导致输出的结构多出一层,是指src/xxx.ts,输出的为dist/src/xxx.js这种场景吗?

@xiangxinji
Copy link
Author

添加helper 函数确实是 babel runtime 的作用,但是也总会有一个babel helper 的一个模块存放目录, 如果增加了 babel runtime , 对于 rollup 其实是有两部分文件, 一部分是 src , 一部分来自 node_modules , 也就是 babel runtime , 所以输出出去的文件会包含 node_modules , 导致你的目录其实并没有按照 src 的方式进行输出, 而是多了一层, rollup 打包出了 node_modules

@xiangxinji
Copy link
Author

babel runtime插件的作用只是添加help函数等,而rollup preserveModules = true的目的是为了保证,输出的文件是非bundle文件,也就是按原始文件目录输出,所以这里没太理解,你说的会导致输出的结构多出一层,是指src/xxx.ts,输出的为dist/src/xxx.js这种场景吗?

  • dist
  • dist/node_modules
  • dist/src
    大概就是这样

@willson-wang
Copy link
Owner

dist 正常生成的目录
dist/node_modules 这是因为你没使用external把node_modules下的npm排除掉,所以node_modules下的npm包也被rollup处理了,最后自然多出了dist/node_modules这样的目录,你将preserveModules = true设置为true,就表示你输出的是非bundle的js,那项目内node_modules的包一般是不需要打包进去的,所以设置下external就可以
dist/src 这个是你的tsconfig.json内的输入输出配置没配好,自己调整下tsconfig.json内的配置就可以

@parlay96
Copy link

@xiangxinji
image
你咋解决的 我也是这样 @willson-wang 就告知

@willson-wang
Copy link
Owner

@xiangxinji image 你咋解决的 我也是这样 @willson-wang 就告知

从你的截图看,还是把react打进去了,也就是说你的externaConfig有没匹配到react的场景,你就只保留一个函数,然后在这个函数内根据id进行排除就好了

@parlay96
Copy link

parlay96 commented May 16, 2024 via email

@willson-wang
Copy link
Owner

何意 咋写呢 哥

------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2024年5月16日(星期四) 上午9:50 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [willson-wang/Blog] babel 开启 runtime 之后并且 rollup preserveModules = rue 会导致输出的结构会多出一层 (Issue #109) @xiangxinji 你咋解决的 我也是这样 @willson-wang 就告知 从你的截图看,还是把react打进去了,也就是说你的externaConfig有没匹配到react的场景,你就只保留一个函数,然后在这个函数内根据id进行排除就好了 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

external: function(id: string) {
        // 返回true就是当作外部npm包,rollup不需要处理,返回false就是不当作外部npm包,rollup需要处理
        if (['react', 'react-dom', 'xxxx'].includes(id)) {
          console.log('id', id)
          // 让所有不想打包进去的npm包,都走这个逻辑
          return true;
        }
        return false;
      },

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

3 participants