簡體   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