Javascript 如何合并ES6类源文件?
目标是创建一个兼容的Javascript 如何合并ES6类源文件?,javascript,ecmascript-6,Javascript,Ecmascript 6,目标是创建一个兼容的bower包 我不熟悉包装,做了一些研究,但还没有任何线索 问题简化如下: \src\ID.js \src\Person.js ID.js export default class ID { static gen() { return 'a unique ID'; } } import ID from './ID.js'; export default class Person { constructor(name) {
bower
包
我不熟悉包装,做了一些研究,但还没有任何线索
问题简化如下:
\src\ID.js
\src\Person.js
ID.js
export default class ID {
static gen() {
return 'a unique ID';
}
}
import ID from './ID.js';
export default class Person {
constructor(name) {
this.name = name;
this.id = ID.gen();
}
}
Person.js
export default class ID {
static gen() {
return 'a unique ID';
}
}
import ID from './ID.js';
export default class Person {
constructor(name) {
this.name = name;
this.id = ID.gen();
}
}
唯一应该公开的类是Person
,ID
将仅在内部使用
如果我想创建一个名为person
的包,那么我认为最好将所有源文件构建成一个包
我知道使用ES5进行一些合并,但是对于ES6类,我不知道
也许我可以创建一个父对象来保存这两个类?但我真的很想知道正确的方法。如果没有这种方法,我也会采取类似于将ES6编译为ES5方法的方法。您可以使用rollup:(我假设您已经安装了nodejs)
此命令生成此文件:
var Person = (function () { 'use strict';
class ID {
static gen() {
return 'a unique ID';
}
}
class Person {
constructor(name) {
this.name = name;
this.id = ID.gen();
}
}
return Person;
})();
--format
参数可以是
:rollup生成一个函数,该函数将导出的变量保存到由iife
参数指定的变量中--name
,如果您使用RequireJS或其他amd兼容模块管理器amd
,如果需要在node.js中运行模块cjs
=umd
+iife
+amd
cjs
(默认):汇总使用es6模块导出变量es6
如果您需要在不支持ES6的浏览器中运行代码,可以使用babel:
$ npm install rollup-plugin-babel
$ npm install babel-preset-es2015-rollup
$ rollup --config config.js --input src/Person.js --output dist/Person.js
config.js:
var babel = require("rollup-babel-plugin");
module.exports = {
format: "iife", // --format
moduleName: "person", // --name
plugins: [
babel({
presets: [
require("babel-preset-es2015-rollup")
],
}),
],
};