项目本身使用 rollup 构建,然后功能上是一个 rollup-plugin ,一开始只导出了一个函数 monkey ,后边加了功能,结果就是拿到的东西不统一了。
虽然可以先判断一下,然而还是想弄清为什么会有这种差异……
export { main as default, monkeyPath, monkeyRequire };
// for test
import monkey, { monkeyPath, monkeyRequire } from "../../dist/index.mjs";
console.log("typeof monkey:", typeof monkey);
// typeof monkey:function
// for prod
import monkey, { monkeyPath, monkeyRequire } from "rollup-plugin-monkey";
console.log("typeof monkey:", typeof monkey);
// typeof monkey:object
console.log("typeof monkey.default:", typeof monkey.default);
// typeof monkey.default:function
项目源码: https://github.com/wdssmq/rollup-plugin-monkey
这里可以看到 dist/ 内容: https://www.npmjs.com/package/rollup-plugin-monkey?activeTab=explore
最终项目使用的配置文件: https://github.com/wdssmq/rollup-plugin-monkey/blob/main/test/gm/rollup.config.mjs
1
Aloento 2023-01-30 18:21:14 +08:00 1
monkey() 能在 prod 中正常调用吗
然后你 prod 有可能引的是 cjs 的,那么 exports["default"] = main; 导出确实是个 object 具体的还需要其他大佬解答 |
2
wdssmq OP @Aloento 感谢!
删除 prod 内对应的 cjs 后变成找不到文件了,是有 mjs 的,然后 pkg 内有如下配置: ```json "main": "dist/index.cjs", "module": "dist/index.mjs", "type": "module", ``` 看来我理解有误,以为使用 module 语法就会使用对应字段的路径? 好像应该按下边的写,虽然并没有测试过 require: ```json "main": "dist/index.mjs", "exports": { "import": "./dist/index.mjs", "require": "./dist/index.cjs" }, "type": "module", ``` 再次感谢! |
3
Aloento 2023-01-31 20:22:39 +08:00
我个人是不会产出 CJS 的,一直都是 MJS 一套带走。然后你用 import 语法,有的 Babel 配置也会给你转成 CJS 语法。主要还是看你怎么设置的,试试 rollup 的默认配置,我用过几次没有任何问题,记得设置 pkg 为 module
|