-
Notifications
You must be signed in to change notification settings - Fork 32
Description
使用 seajs 做项目开发时,模块化非常爽
但是要上线时,打包是一个大问题。
背景: 使用的是cmd格式的,不可能改成commonjs的。
seajs.org 介绍 推荐使用配套打包工具spm的
刚开始用 spm2 打包,结果 spm2 抽取依赖时,不抽取所有的依赖 ['a.js', 'b.js'],明明我还有 c.js 没有被抽取, 由于存在 抽取的依赖, 所以不再 执行 require('c.js')。 好吧,我妥协了,手动把抽取的依赖删了,让它能够执行 require() 了。 但是新问题又来了, require被压缩了。至此,决定放弃 spm2.
后来找到了gulp 尝试了很多 例如, gulp-cmd、gulp-seajs-concat、gulp-seajs-transport、gulp-seajs-combo、gulp-seajs 等模块,这些模块要么不抽取id,要么不能合并,始终找不到合适的。
再后来 提issue
@afc163 给我发了个地址 http://sorrycc.gitbooks.io/spm-handbook/content/develop-package/README.html
看了里面buildArgs 的打包方式,有 relative、 al、standalone、ignore等,心喜若狂,这就是我想要的。
马上安装spm3,可当我怎么换着姿势执行 spm build 时,结果都一个样。
哎! 继续翻 issue。 spm build 只内置 standalone 方式, seajs用户 请使用 spm-sea
好吧,只有安装 spm-sea 了, 但是 spm-sea 怎么用的啊!没有文档 一直报错。。 。。
TAT ! 泪奔! 这么久了,我还在查怎么打包。
我的目录:
--sea-modules
|_标准模块
|_static构建后的目录
--static
|_业务模块(源文件)
|_index
我的需求:
- 能根据目录抽取id,如果压缩 require 关键字的话,依赖数组能全部抽取。
- 想要把顶级标识的模块打包进来,想要ignore不需要的包。(配置了别名,能知道顶级标识的模块的路径吗?)
- 刚开始我想要一句命令打包整个项目,现在能实现就实现吧。
我适合用什么工具打包呢 ?