帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:Aliasing  COM  bro  别名  Source Maps  COMM  Bundle  Commonjs  
minimal CommonJS browser bundler with aliasing, extensibility, and source maps

  • 源代码名称:commonjs-everywhere
  • 源代码网址:http://www.github.com/michaelficarra/commonjs-everywhere
  • commonjs-everywhere源代码文档
  • commonjs-everywhere源代码下载
  • Git URL:
    git://www.github.com/michaelficarra/commonjs-everywhere.git
  • Git Clone代码到本地:
    git clone http://www.github.com/michaelficarra/commonjs-everywhere
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/michaelficarra/commonjs-everywhere
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • 到处都是

    web浏览器使用从缩小的JS包到原始源的源代码,浏览器替代的别名和任意语言支持的可扩展性。

    安装

    
    npm install -g commonjs-everywhere
    
    
    
    

    用法

    
    $ bin/cjsify --help
    
    
    
     Usage: cjsify OPT* path/to/entry-file.ext OPT*
    
    
    
     -a, --alias ALIAS:TO replace requires of file identified by ALIAS with TO
    
    
     -h, --handler EXT:MODULE handle files with extension EXT with module MODULE
    
    
     -m, --minify minify output
    
    
     -o, --output FILE output to FILE instead of stdout
    
    
     -r, --root DIR unqualified requires are relative to DIR; default: cwd
    
    
     -s, --source-map FILE output a source map to FILE
    
    
     -v, --verbose verbose output sent to stderr
    
    
     -w, --watch watch input files/dependencies for changes and rebuild bundle
    
    
     -x, --export NAME export the given entry module as NAME
    
    
     --deps do not bundle; just list the files that would be bundled
    
    
     --help display this help message and exit
    
    
     --ignore-missing continue without error when dependency resolution fails
    
    
     --inline-source-map include the source map as a data URI in the generated bundle
    
    
     --inline-sources include source content in generated source maps; default: on
    
    
     --node include process object; emulate node environment; default: on
    
    
     --version display the version number and exit
    
    
    
    

    注意:使用 - 作为一个条目文件,以接受在标准代码中的JavaScript

    注意:要禁用一个选项,用 no-,比如 --no-node 来前缀

    示例:

    常用用法

    cjsify src/entry-file.js --export MyLibrary --source-map my-library.js.map >my-library.js

    监视条目文件,它的依赖项,甚至是新添加的依赖项。 注意,只有当被监视的依赖项被触及时,才会访问需要重建的文件。 这是一种比简单重构所有东西更有效的方法。

    cjsify -wo my-library.js -x MyLibrary src/entry-file.js

    使用浏览器特定的/lib/node-compatible.js ( 记住使用 root relative 路径进行别名) 版本。 空别名目标用于在需要源模块(。fs 中的) 时将错误延迟到运行时。

    cjsify -a/lib/node-compatible.js:/lib/browser-compatible.js -a fs: -x MyLibrary lib/entry-file.js

    模块接口

    cjsify(entryPoint, root, options) → Spidermonkey AST

    捆绑给定文件及其依赖项;返回包的Spidermonkey AST表示形式。 通过 escodegen 运行AST来生成JS代码。

    • entryPoint 是一个文件 relative 到 process.cwd(),它将是标记为包含在包中以及导出模块的初始模块。
    • root 是非限定要求的目录为 relative ;默认值为 process.cwd()
    • options 是具有零个或者多个以下属性的可选对象( 默认为 {} )
      • export: 要添加到全局范围的变量名称;从 entryPoint 模块中分配导出的对象。 可以提供任何有效的Left-Hand-Side表达式
      • aliases: 它的键和值为 root -rooted路径( /src/file.js )的对象,表示将替换的值,需要解析为关联键。
      • handlers: 对象是文件扩展名( '.roy' ),其值是从文件内容到spidermonkey格式( 如一个esprima生成或者一个字符串的函数)的对象。 默认情况下包含CoffeeScript和JSON的处理程序。 如果没有为文件扩展名定义处理程序,则假定它是 JavaScript。
      • node: falsey值导致绑定阶段忽略模拟 node 环境的process 存根
      • verbose: 将其他操作信息记录到 stderr
      • ignoreMissing: 在依赖关系解析失败时继续运行

    示例

    示例

    假设我们有以下目录树:

    
    * todos/
    
    
     * components/
    
    
     * users/
    
    
     - model.coffee
    
    
     * todos/
    
    
     - index.coffee
    
    
     * public/
    
    
     * javascripts/
    
    
    
    

    运行以下命令将导出 index.coffee 及其依赖项作为 App.Todos

    
    cjsify -o public/javascripts/app.js -x App.Todos -r components components/todos/index.coffee
    
    
    
    

    由于 上面 命令将 components 指定为未限定要求的root 目录,因此我们可以要求 components/users/model.coffee 具有 require'users/model'。 输出文件将为 public/javascripts/app.js

    node-模块示例

    jsAst= (require'commonjs-everywhere').cjsify'src/entry-file.coffee', __dirname,
     export:'MyLibrary'aliases:'/src/module-that-only-works-in-node.coffee':'/src/module-that-does-the-same-thing-in-the-browser.coffee'handlers:'.roy': (roySource, filename) -># the Roy compiler outputs JS code right now, so we parse it with esprima (require'esprima').parse (require'roy').compile roySource, {filename}
    {map, code} = (require'escodegen').generate jsAst,
     sourceMapRoot:__dirnamesourceMapWithCode:truesourceMap:true

    示例输出



    文章标签:COM  ext  COMM  Source  bro  Bundle  Commonjs  别名  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语