Javascript 如何将一个库发布到npm,该库可以与导入和require一起使用?
是用es6编写的,在发布到npm之前使用Babel进行传输 当消费者这样做时:Javascript 如何将一个库发布到npm,该库可以与导入和require一起使用?,javascript,node.js,npm,babeljs,es6-modules,Javascript,Node.js,Npm,Babeljs,Es6 Modules,是用es6编写的,在发布到npm之前使用Babel进行传输 当消费者这样做时: 从“tealium跟踪器”导入initTealiumTracker; 一切正常 但是,一些消费者希望使用require而不是导入,并且必须附加。默认值: const initTealiumTracker=require(“tealium跟踪器”)。默认值; 如何发布库以避免附加.default 我希望消费者能够做到: 从“tealium跟踪器”导入initTealiumTracker; 或 const init
从“tealium跟踪器”导入initTealiumTracker;
一切正常
但是,一些消费者希望使用require
而不是导入
,并且必须附加。默认值
:
const initTealiumTracker=require(“tealium跟踪器”)。默认值;
如何发布库以避免附加.default
我希望消费者能够做到:
从“tealium跟踪器”导入initTealiumTracker;
或
const initTealiumTracker=require(“tealium跟踪器”);
在源代码中,如果您同意使用commonJS语法进行导入和导出 一种选择是将所有
导入
和导出
替换为需要
和模块。导出
。看起来webpack不允许混合语法(ES6和commonJS模块)
因此,您的index.js
文件可以要求依赖模块提供的函数
const { callUtag, flushUtagQueue } = require("./utagCaller");
并将默认函数导出为
module.exports = initTealiumTracker;
module.exports.default = initTealiumTracker;
同样,从属模块也可以将函数导出为
module.exports = { callUtag, flushUtagQueue };
这样,消费者应该能够使用
import initTealiumTracker2 from "tealium-tracker";
或
const initTealiumTracker1 = require("tealium-tracker");
使用现代的import
/export
语法编写代码,然后使用现代语法生成/dist/yourlib.js
,并告诉人们如果使用旧版本的节点,他们应该需要README.md中的旧版本?