繁体   English   中英

Node.JS 导出 ES Object 成 NPM package?

[英]Node.JS export ES Object into NPM package?

我有一个 ES5 对象/函数,我试图在 NPM package 中使用它。 该 object 位于命名空间中,例如

 MY_NAMESPACE.myObject = function(){...}

其中 MY_NAMESPACE 只是一个 object。 对于 web,我只需链接对象/函数所在的 JS 文件,然后执行

 let whatever = new MY_NAMESPACE.myObject();

我已将源代码保存为my_function.js

我像这样创建了一个 npm package ,以便将其安装在我的应用程序中

 {
       "name": "whatever",
       "version": "1.0.0",
       "description": "",  
       "main": "index.js",
       "scripts": {
              "test": "echo \"Error: no test specified\" && exit 1"
       },  
       "author": "whatever",
        "license": "Apache-2.0",  
        "exports" :{
             "./my_function.js" : "./my_function.js"
       }
   }

当我在本地安装 package 时,我可以看到my_function.jsnode_modules/whatever

我现在如何在我的应用程序中引用/导入my_function.js ,然后能够调用

  let whatever = new MY_NAMESPACE.myObject();

一些糟糕的 Node.JS 文档提到了添加 ES 模块的.mjs 文件,但找不到示例/教程......我也试图不向my_function.js添加任何类似module.exports的内容,因为该文件已更新不断地在网络/前端环境中使用。

所以基本上,我试图在 NPM package 中附加一个 .js 文件,并希望在我的应用程序中提供它的内容。 我希望,在 package 的index.js中添加一些内容会呈现文件中声明的对象,这些对象可在我的应用程序中使用......我只是不知道 go 从这里到哪里。

公开 function 的一种模式是使用module.exports ,如下所示:

# my_function.js

MY_NAMESPACE = {};
MY_NAMESPACE.myObject = function(){...};

module.exports = MY_NAMESPACE;

然后它可以被同一目录中的另一个模块使用:

# consumer JS file

let MY_NAMESPACE = require('./my_function');

let test = new MY_NAMESPACE.myObject();

如果你真的想 package up my_function.js 在一个单独的 node.js package 中(例如,如果你需要在项目之间共享它),有几个额外的步骤。 该文档是一个很好的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM