Skip to content

army8735/ranma

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Mar 5, 2014
Apr 3, 2014
Feb 26, 2014
Feb 28, 2014
Dec 17, 2015
Mar 21, 2014
Apr 2, 2014
Dec 17, 2015

A converter between CommonJS/AMD/CMD/Module/other

ranma取自同名动漫人物乱马,意指同一个事物的不同形式。

NPM version Build Status Coverage Status Dependency Status

为满足所写的代码能同时运行于server环境和web环境,而不需手动修改,所以做了个转换方法,使得几者之间的模块能够互相等价转化。

需要注意的是AMD模块的写法应遵守文件和模块一对一的原则。

INSTALL

npm install ranma

API

  • cjsify(code:String):String

    • 将代码转换为CommonJS
    • 对于AMDCMD,会将define的factory提取,改写return为module.exports并删除define,如果define父语句有if判断也会删除
    • 对于es6 module,会将module和import变为require,export变为exports,export default变为module.exports
    • 对于普通文件,会将全局声明的变量作为exports,全局使用的未声明变量作为require
  • amdify(code:String):String

    • 将代码转换为AMD
    • 在cjsify的基础上进行define包裹
    • 如果代码是CMD不做修改,因为AMD兼容这种写法
  • cmdify(code:String):String

    • 将代码转换为CMD
    • 在cjsify的基础上进行define包裹
    • 如果code是AMD类型,会进行依赖转化——即将factory的参数改为CMD的require, exports, module固定参数,同时依赖变为require变量声明
  • type.isCommonJS(code:String):Boolean

    • code是否是CommonJS
  • type.isAMD(code:String):Boolean

    • code是否是AMD
  • type.isCMD(code:String):Boolean

    • code是否是CMD
  • type.isModule(code:String):Boolean

    • code是否是es6 module

AMD和CMD的区分依据

  • 是否出现define.amd的判断
  • factory的参数是否为固定的require, exports, module

License

[MIT License]

About

a converter between CommonJS/AMD/CMD/other

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published