确保导出与npm的兼容性

时间:2018-04-17 08:16:38

标签: javascript

我正在开发一个npm模块,我希望它可以被所有类型的js客户端应用程序导入。

现在我尝试了export default myObjectmodule.exports = myObject

问题是export default似乎仅在es6应用中可用,并且module.exports在纯javascript中不起作用,因为未定义模块。

所以我希望我的模块可以访问,如果客户端使用React,Angular,Vue,纯Javascript或其他...我的模块只是一个内部有纯javascript函数列表的对象。这里没有棘手的部分。

有没有办法确保模块可用,无论客户端将使用哪种技术?

1 个答案:

答案 0 :(得分:0)

主题现在有点老了,以防有人遇到同样的问题。

我认为Yury建议使用UMD。经过一些不成功的尝试后,我最终直接使用了webpack。从来不知道他正在为我们提供这些如此简单的UMD工具。这是我的配置文件。

我导出两个配置以同时构建普通版本和缩小版本。

module.exports = [
  {
    entry: path.resolve(__dirname, "src/myLib.js"),
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "myLib.js",
        library: 'myLib',
        libraryTarget: "umd",
        umdNamedDefine: true,
    },
    mode: "development",
    module: config.module,
    resolve: config.resolve,
    plugins: config.plugins,
  },
  {
    entry: path.resolve(__dirname, "src/myLib.js"),
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "myLib.min.js",
        library: 'myLib',
        libraryTarget: "umd",
        umdNamedDefine: true,
    },
    mode: "production",
    module: config.module,
    resolve: config.resolve,
    plugins: config.plugins,
  },
];