amrio-seajs-builder

seajs module builder

amrio-seajs-builder

amrio-seajs-builder 是一个合并前端 CMD 模块的工具,目前只是用来和 seajs 配套使用。

这个项目没有使用 grunt-cmd-transportgrunt-cmd-concat 进行自定义构建,
而是使用了 cmd-util 这个更为灵活的构建工具。

  • transport 和 concat 过程没有分离,采用线性查找所有依赖,然后合并进来,避免产生无用文件

  • 分析文件合并后的 AST,置空其它依赖模块的依赖数组,把这些依赖数组去重后只放入入口模块的依赖数组里,进一步减小文件后合并大小

  • 分析文件合并后的 AST 并删除重复的模块,
    重复define(id, deps, factory)的模块用undefined;代替掉了,如果不是使用define严格包裹的模块可能会发生错误,因为只是简单的把define(id, deps, factory)变成undefined;

  • 采用了缓存策略,提升 transport,concat 的性能

非常感谢 seajs 和它配套的自定义构建工具

此模块需要全局安装,以便使用全局命令 asb

npm install -g amrio-seajs-builder

使用 npm 全局安装完毕后,可以在命令行中使用:asb -h 查看该命令的帮助信息, 如果报错,请重新全局安装,直到命令行中 asb 命令可用

-s, --src <path>构建路径,必填项!
-d, --dest <path>部署路径 默认值:./sea-modules
-p, --paths <path> 顶级模块查找的基础 paths 路径,和 node_modules的作用一样 默认值:./sea-modules
-all 构建模块范围,默认只构建相对模块,指定此参数后顶级模块和相对模块都会被合并进来

asb -s amrio

-s 参数是指定构建源文件/文件夹的路径,这条命令会尝试找到当前执行 abs 命令目录下的 ./amrio 文件夹,
并且把里面 .js, .css 模块文件使用默认构建范围(相对模块)进行构建。
最后构建至默认部署路径 ./sea-modules 文件夹里面,
构建完毕后会在 sea-modules 目录下生成 amrio/**.{js,css} 文件

asb -s amrio
asb -s amrio,biz/mix/validation.js
asb -s amrio -d ../../custom --all
asb -s amrio -p ../../myLib,my-module,../sea-modules
var builder = require('amrio-seajs-builder')
 
builder('amrio', {
    base: './',
    dest: './sea-modules',
    paths: ['../my-modules', 'sea-modules', 'lib'],
    all: true,
    minify: false
})