1.0.7 • Published 10 years ago

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

Weekly downloads
1
License
MIT
Repository
github
Last release
10 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

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.3.0

10 years ago

0.2.0

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago