Javascript 在NPM范围的包中公开两个(或更多)Node.js Babel类

Javascript 在NPM范围的包中公开两个(或更多)Node.js Babel类,javascript,node.js,npm,babeljs,Javascript,Node.js,Npm,Babeljs,我在一个公共范围的包中有两个Node.js Babel类,我想公开它们 公共范围NPM中的类: Index.js export default class Index { constructor() { console.log("abc!"); } } SecondClass.js export default class SecondClass { constructor() { console.log("SecondClass! Se

我在一个公共范围的包中有两个Node.js Babel类,我想公开它们

公共范围NPM中的类:

Index.js

export default class Index {
    constructor() {
        console.log("abc!");
    }
}
SecondClass.js

export default class SecondClass {
    constructor() {
        console.log("SecondClass! SecondClass!! SecondClass!!!");
    }
}
在公共范围的NPM中,我只能设置一个主文件:

"main": "./dist/index.js",
在使用项目中,我尝试导入它们,但是我失败了

import { Index, SecondClass } from '@my-scope/my-package';

new Index();
new SecondClass();
依赖项:

"devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-preset-es2015": "^6.24.1"
}
我怎么做?我能设法做到吗


更新1:即使在软件包中使用
文件也不起作用,更糟糕的是,一旦我使用了它,当我在usage项目中安装我的作用域软件包时,所有
JS
文件都消失了

"files": [
    "./dist/index.js",
    "./dist/SecondClass.js"
],


更新2:我尝试使用前面提到的
“文件”:[…]
,一旦找不到任何解决方法,我就在NPM Github中发布了一个问题:

有可能,尝试以下方法:

Index.js

用法


常用的方法是创建一个名为index.js的文件,以便重新导出文件夹中的不同模块:

/src
    /foo.js
    /bar.js
    /index.js

// index.js
export * from './foo';
export * from 'bar';
这将允许您直接从文件夹导入,而不是从特定文件导入

import {foo, bar} from './src';

经过几个小时的研究,我找到了一个解决办法,使用普通代码,但保持巴别塔的使用

对于作用域NPM包中的主JS文件,例如
index.JS
,必须导出所有类,如:

import SecondClass from './SecondClass';
import ThirdClass from './ThirdClass';

export {
    SecondClass,
    ThirdClass
};
在您的使用项目中,您可以导入如下内容:

import { SecondClass, ThirdClass } from '@my-scope/my-package';

new SecondClass();
new ThirdClass();
您的作用域NPM包中的package.json只需要公开
index.js
“main”:“/dist/index.js”

依赖项和版本:

  • “babel cli”:“^6.26.0”
  • “babel-preset-es2015”:“^6.24.1”
  • $npm-v:3.10.10
  • $node-v:v6.11.3

我非常喜欢这个想法,但如果我有多个,超过两个,是否有通用的解决方案?我不知道其他解决方案。但是,如果我们想导出许多对象,我认为好的旧的
模块export
会更甜美,但不推荐在您的情况下使用。嗯,不确定为什么它不能被编译。可能是在你只能导出为
json
像你的答案可能会工作。我给-1,因为你编辑了你的问题后,我的答案以下我的解决方案+你的上述评论没有意义!伙计。对我来说没关系。我修正了我的答案,这样就不会给别人带来麻烦。很高兴您找到了解决方案:)我没有理解您的方法,我正在使用软件包,那么如何使用
src
文件夹?!这只是一个例子,惯例是创建一个index.js文件来导出其余的文件。你试过了吗?基于你的想法,我尝试了很多方法,但都没有成功,你有任何有效的用例吗?谢谢您应该寻找ES6导入/导出教程,您需要了解一些背景知识才能理解它们是如何工作的。你也可以在github上寻找js库或项目,你会明白的。
import SecondClass from './SecondClass';
import ThirdClass from './ThirdClass';

export {
    SecondClass,
    ThirdClass
};
import { SecondClass, ThirdClass } from '@my-scope/my-package';

new SecondClass();
new ThirdClass();