Javascript Node.JS是否将ES对象导出到NPM包中?
我有一个ES5对象/函数,我正试图在NPM包中使用它。该对象位于命名空间中,例如Javascript Node.JS是否将ES对象导出到NPM包中?,javascript,node.js,npm,Javascript,Node.js,Npm,我有一个ES5对象/函数,我正试图在NPM包中使用它。该对象位于命名空间中,例如 MY_NAMESPACE.myObject = function(){...} 其中我的_名称空间只是一个对象。对于web,我只需在对象/函数所在的位置链接一个JS文件,然后执行以下操作 let whatever = new MY_NAMESPACE.myObject(); 我已将源代码保存为my_function.js 我像这样创建了一个npm包,以便在我的应用程序中安装它 { "
MY_NAMESPACE.myObject = function(){...}
其中我的_名称空间只是一个对象。对于web,我只需在对象/函数所在的位置链接一个JS文件,然后执行以下操作
let whatever = new MY_NAMESPACE.myObject();
我已将源代码保存为my_function.js
我像这样创建了一个npm包,以便在我的应用程序中安装它
{
"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"
}
}
当我在本地安装包时,我可以看到my_function.js
位于node\u modules/which
我现在如何在我的应用程序中引用/导入my_function.js
,然后才能调用
let whatever = new MY_NAMESPACE.myObject();
一些糟糕的Node.JS文档提到.mjs文件以添加ES模块,但找不到示例/教程。。。我还试图不添加任何东西,比如
module.exports
到my_function.js
,因为该文件会不断更新并在web/前端环境中使用
所以基本上,我正在尝试在NPM包中附加一个.js文件,并希望它的内容在我的应用程序中可用。我希望,在包的
index.js
中添加一些东西可以呈现文件中声明的对象,在我的应用程序中可以使用这些对象。。。我只是不知道该怎么办。公开函数的一种模式是这样使用:
# 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();
如果您真的想将my_function.js打包到一个单独的node.js包中(例如,如果您需要在项目之间共享它),那么还需要采取一些额外的步骤。是一个很好的起点。是的,这就是我要做的,打包它。我是否需要向我的包的index.js添加任何内容?如果您只想在本地导入文件,则无需向index.js添加任何内容,如示例所示。如果您想构建一个捆绑包(例如,与npm一起使用,使用package.json),那么是的,该包可能会有自己的index.js导出所有内容。但是,如果你只是问“我如何构建一个NoDE.JS包”,你应该看看上面链接的文档来获得概述。考虑写一个新的问题,更清楚地解释你在构建NPM包的过程中遇到了什么问题。例如,显示您创建的package.json,并指出我提供的链接中的一个具体步骤,该步骤不清楚或您遇到问题。您能否解释为什么使用
module.exports
这是web/front的问题?例如,lodash可以在前端和后端使用。您可以看到如何创建,然后它将构建为“因为该文件会不断更新,并在web/前端环境中使用”。很明显,我们不希望操纵该文件,这正是这个问题的要求。使用“module.exports”有什么问题在web/前端环境中?我们不希望向该文件注入任何内容,也不希望探讨是否可以这样做