最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何将库发布到npm,可以同时用于导入和需求?

IT培训 admin 4浏览 0评论

如何将库发布到npm,可以同时用于导入和需求?

[tealium-tracker用es6编写,并在发布到npm之前使用Babel进行编译。

当消费者这样做时:

import initTealiumTracker from "tealium-tracker";

一切正常。

但是,某些消费者希望使用require而不是import,并且必须附加.default

const initTealiumTracker = require("tealium-tracker).default;

如何发布库以避免附加.default

我希望消费者能够做到这一点:

import initTealiumTracker from "tealium-tracker";

const initTealiumTracker = require("tealium-tracker);

Source code

回答如下:

在您的源代码中,如果可以使用commonJS语法进行导入和导出...

一种选择是将所有importexport替换为requiremodule.exports。看起来webpack不允许混合语法(ES6和commonJS模块)。

因此您的索引文件可以将依赖模块的功能导入为

const { callUtag, flushUtagQueue } = require("./utagCaller");

并将默认函数导出为

module.exports = initTealiumTracker;
module.exports.default = initTealiumTracker;

同样,您的从属模块可以将功能导出为

module.exports = { callUtag, flushUtagQueue };

这样,消费者应该可以使用其中任何一个

import initTealiumTracker2 from "tealium-tracker";

OR

const initTealiumTracker1 = require("tealium-tracker");

如何将库发布到npm,可以同时用于导入和需求?

[tealium-tracker用es6编写,并在发布到npm之前使用Babel进行编译。

当消费者这样做时:

import initTealiumTracker from "tealium-tracker";

一切正常。

但是,某些消费者希望使用require而不是import,并且必须附加.default

const initTealiumTracker = require("tealium-tracker).default;

如何发布库以避免附加.default

我希望消费者能够做到这一点:

import initTealiumTracker from "tealium-tracker";

const initTealiumTracker = require("tealium-tracker);

Source code

回答如下:

在您的源代码中,如果可以使用commonJS语法进行导入和导出...

一种选择是将所有importexport替换为requiremodule.exports。看起来webpack不允许混合语法(ES6和commonJS模块)。

因此您的索引文件可以将依赖模块的功能导入为

const { callUtag, flushUtagQueue } = require("./utagCaller");

并将默认函数导出为

module.exports = initTealiumTracker;
module.exports.default = initTealiumTracker;

同样,您的从属模块可以将功能导出为

module.exports = { callUtag, flushUtagQueue };

这样,消费者应该可以使用其中任何一个

import initTealiumTracker2 from "tealium-tracker";

OR

const initTealiumTracker1 = require("tealium-tracker");
发布评论

评论列表 (0)

  1. 暂无评论