Package Exports
- re-define
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (re-define) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
re-define
Let's re-define
something ...
re-define
is able to resolve whole dependencies tree as well as single module.
from: CommonJS
, Plain JS
, AMD
, AMD CJS
to: * ... yep custom templates are allowed.
Getting Started
Install the module: npm install -g re-define
###Usage
Usage: re-define [options]
Options:
-h, --help output usage information
-v, --verbose Verbose mode
-c, --config [name] Re-define config
-w, --wrapper [type] Wrapper type iife, empty, umd
-b, --base [dir] Base folder for project
-m, --main [file] Main file
-f, --follow [value] Whether should resolve whole dep tree
-r, --report Bundle overview
-s, --separator [value] Module separator while reading from stream
Examples
From stream
echo "define('a',['b','c'],function(b, c){ console.log(b,c) })" | re-define --wrapper iife
(function( b,c ){
var a = function (b, c) {
console.log(b, c);
}(b, c);
})( b,c )
echo "var a = require('test'); var b = 10" | re-define
or with output
echo "var a = require('test'); var b = 10" | re-define > dist.js
(function(parent, factory) {
if (typeof define === 'function' && define.amd) {
define('module_name', ['test'], factory)
} else {
var test = test
factory(test)
}
}(this, function(test) {
var main = (function(r_0) {
var a = r_0;
var b = 10;
})(test);
return
}))
From file
goto -> cd example/demo
less main.js | re-define
or
re-define build.config && less dist.js
###Config
{ base: '.'
, main: ''
, out: ''
, name: 'module_name'
, verbose: false
, wrapper: 'umd/4all'
, dependencies: {
resolve: {
"^(text\/?)*!" : "text",
"^(css\/?)*!" : "css",
"RegExp" : "skip",
}
, references: {
//e.g. "jquery": "parent.$"
}
}
, escape: function (val) { return val.replace(/\.|\/|\\|-/g, '_') }
///////////////
// Equipment //
///////////////
, helpers: [ join, escape, ref, append]
, converter: [ common_js, amd_define, amd_require]
, resolvers: [ text, css, skip, include ],
, wrappers: [ iife, amd-define, umd/amd-web, umd/all]
}
Example config:
{ "base": "lib"
, "main": "main.js"
, "output": "dist.js"
, "wrapper": "umd/amd-web"
, "name": "my-component"
, "exports": "one"
, "namespace": "ns"
, "dependencies":
{ "resolve": {
"^(css\/?)*!": "skip#css", //plugin#alias -> within template available via {{alias}}
"^(domReady\/?)!": "skip",
"jquery" : "include#path_relative_to_base"
}
, "references": {
"jquery": "parent.$"
, "dep/dep": "parent['ns'].dep"
}
}
}
Example wrapper:
(function (parent, factory){
if (typeof define === 'function' && define.amd) {
define('{{{name}}}', [{{{seq join append '\'|\'' external css}}}], factory)
} else if (typeof exports === 'object') {
module.exports = factory({{{seq join '#require(|)' append '\'|\'' append external}}})
} else {
{{#each external}}var {{seq ../escape this}} = {{{seq ../ref this}}}
{{/each}}
{{#if exports}}parent['{{{seq ref exports}}}'] = {{/if}}factory({{{seq escape external}}})
}
}(this, function ({{{seq escape external}}}) {
{{{code}}}
return {{{exports}}}
}));
Release notes
0.0.15
- minor
cli
improvementsre-define build.config
0.0.14
-
colors
not included in package.json -
--stream
flag is no longer needed
0.0.13
- resolver - include#path - pull in external js files
- deps reports - re-define --report
0.0.12
- converter - amd commonjs - define(function(req, mod, exp) {})
TODO
- resolver - for resolving nested external deps
- increase test coverage
- follow fix - when not following do not resolve plugin
- switch to acorn
- removing debugger/console.log statements
- grunt task
- gulp support
Advanced usage
####Instance
var redefine = require('re-define')
, myConfig = {}
, config = redefine.config(myConfig)
readStream
.pipe(redefine.convert(config))
.pipe(writeStream)
Custom converter (todo)
converter: {
common_js : require('./lib/converter/cjs')
, amd_cjs : require('./lib/converter/amd-cjs')
, amd_define : require('./lib/converter/amd-define')
, amd_require : require('./lib/converter/amd-require')
}
Custom wrapper (todo)
wrappers: {
'iife' : file('./lib/templates/iife.hbs')
, 'amd-define' : file('./lib/templates/amd-define.hbs')
, 'umd/amd-web' : file('./lib/templates/amd-web.hbs')
, 'umd/all' : file('./lib/templates/return-exports-global.hbs')
}
Custom resolver (todo)
resolvers: {
text : require('./lib/resolver/file')
, css : require('./lib/resolver/css')
, skip : require('./lib/resolver/skip')
, include : require('./lib/resolver/include')
}
Custom handlebars helper (todo)
helpers: {
join : function() { return _.toArray(arguments).join(',') }
, escape : function() { return _.map(arguments, function(d) { return config.escape(d) })}
}