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

时间:2017-09-08 11:18:09

标签: 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! 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 :即使使用套餐中的files也无法解决问题,一旦我使用它,所有JS文件都会消失在使用项目中安装我的作用域包。

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

更新2:我尝试使用前面提到的"files":[ ... ],一旦我找不到任何解决方法,我在NPM Github中发布了一个问题:{{3 }}

3 个答案:

答案 0 :(得分:2)

经过几个小时的研究,我能够找到一种使用vanilla代码的解决方法,但保留了Babel的用法。

对于作用域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

答案 1 :(得分:0)

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

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

// index.js
export * from './foo';
export * from 'bar';

这将允许您直接从文件夹导入而不是特定文件。

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

答案 2 :(得分:-1)

有可能,试试这个:

<强> Index.js

import SecondClass from './SecondClass';

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

<强> 用法

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

new Index();
new SecondClass();