我在公共范围的包中有两个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 }}
答案 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"
。
依赖关系和版本:
答案 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();