Skip to content

seajs用户的疑惑与心塞 #146

@honger05

Description

@honger05

使用 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        

我的需求:

  1. 能根据目录抽取id,如果压缩 require 关键字的话,依赖数组能全部抽取。
  2. 想要把顶级标识的模块打包进来,想要ignore不需要的包。(配置了别名,能知道顶级标识的模块的路径吗?)
  3. 刚开始我想要一句命令打包整个项目,现在能实现就实现吧。

我适合用什么工具打包呢 ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions