1.0.7 • Published 10 years ago
gulp-es6-module-to-closure v1.0.7
gulp-es6-module-to-closure
compile ES6 import/export
=> Google Closure goog.require/goog.provide
Attention: For supporting ES6 features, some special rules are introduced. See examples below, especially if you use translated library from existing code.
Install
npm install gulp-es6-module-to-closure --save-dev
Usage
var es6ModuleToClosure = require("gulp-es6-module-to-closure");
gulp.src("./src/**/*.js")
.pipe(es6ModuleToClosure({
root: 'src',
namespace: "prefix.name.space"
}))
.pipe(gulp.dest("./dist"));
Example
export
- Compiling
${srcDir}/ns/file-name.js
export var foo = 'FOO';
with namespace `com.xxx` will generate
```javascript
goog.provide("com.xxx.ns.filename.foo");
goog.scope(function() {
com.xxx.ns.filename.foo = 'FOO';
});
at ${distDir}/ns/file-name.js
.
- Compiling
${srcDir}/ns/file-name.js
export default 'FOO';
with namespace `com.xxx` will generate
```javascript
goog.provide("com.xxx.ns.filename.default");
goog.scope(function() {
com.xxx.ns.filename.default = 'FOO';
});
at ${distDir}/ns/file-name.js
.
import
- Compiling
${srcDir}/ns/app.js
import {foo} from './file-name.js';
with namespace `com.xxx` will generate
```javascript
goog.require("com.xxx.ns.filename.foo");
goog.scope(function() {
var foo = com.xxx.ns.filename.foo;
});
at ${distDir}/ns/app.js
.
- Compiling
${srcDir}/ns/app.js
import foo from './file-name.js';
with namespace `com.xxx` will generate
```javascript
goog.require("com.xxx.ns.filename.default");
goog.scope(function() {
var foo = com.xxx.ns.filename.default;
});
at ${distDir}/ns/app.js
.
Supported Syntax
Following table is made from Draft October 14, 2014.
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-static-and-runtme-semantics-module-records
import
Syntax | supported |
---|---|
import v from "mod"; | ✓ |
import * as ns from "mod"; | ✓ |
import {x} from "mod"; | ✓ |
import {x as v} from "mod"; {x} from "mod"; | ✓ |
export
Syntax | supported |
---|---|
export var v; | ✓ |
export default function f(){}; | ✓ |
export default function(){}; | ✓ |
export default 42; | ✓ |
export {x}; | ✓ |
export {v as x}; | ✓ |
export {x} from "mod"; | |
export {v as x} from "mod"; | |
export * from "mod"; |
Migration
v0.x.x => v1.x.x
Reference from manual code to generated code is changed.
Before:
goog.require('name.space.varName');
After:
goog.require('name.space.fileName.varName');