1.0.7 • Published 9 years ago

gulp-es6-module-to-closure v1.0.7

Weekly downloads
1
License
MIT
Repository
github
Last release
9 years ago

gulp-es6-module-to-closure

Build Status Coverage Status

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

Syntaxsupported
import v from "mod";
import * as ns from "mod";
import {x} from "mod";
import {x as v} from "mod"; {x} from "mod";

export

Syntaxsupported
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');
1.0.7

9 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago

0.3.0

9 years ago

0.2.0

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago