This repository was archived by the owner on Aug 15, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 179
Spm build 之自定义目录结构
leoner edited this page Oct 15, 2012
·
22 revisions
在上一篇文章中我们已经介绍了基于默认的目录结构的模块打包,其这篇文章主要针对任意目录结构的项目打包。下面涉及到的例子,用户可以根据自己项目的特点进行调整。
对于目录结构,SPM 本身没有太多的要求,只需要指定 SPM 需要操作的代码即可。
在打包的过程中,由于会对代码本身的内容有改动(标准化,压缩,合并等),所以一般情况下会把代码分为两部分源码目录和部署上线的代码. 下面是一个简单的目录结构: 下面的例子来自社区用户,具体可以参看 https://github.com/seajs/spm/issues/316
├── assets # common modules and the third-party libaries
│ ├── backbone
│ │ └── 0.9.2
│ │ ├── backbone-min.js
│ │ └── backbone.js
│ ├── seajs
│ │ └── 1.2.1
│ │ ├── sea-min.js
│ │ └── sea.js
│ ├── ...
│ ├── plugin-tracker.js
│ ├── ... # common seajs plugins as plugin-tracker
│ └── css
│ └── reset.css
├── css
├── imgs
├── index.html
└── js # a lot of app's custom modules
└── app
├── bootstrap.js
├── models
│ └── nearbydeals.js
├── template.js
├── views
│ └── nearbydeals.js
└── ...
assets目录下主要存放不经常变的通用模块、通用资源文件和第三方类库
js下存放很多app相关自定义的业务、功能模块。其中app这个目录可以看做是一个大的模块项目,其中里面的js文件可以认为是子模块.
首先我们需要提供下面几个信息, 其中下面的命令都是在js目录中执行.
- 源文件
- 模块输出配置 这两个是必须提供的,其中我们提供了多种方式来让用户指定这两个参数:
spm deploy --src=app --local=../../
执行完这个命令后就会把app下面的代码进行简单的处理,部署到assets目录中了。不过由于缺少模块输出配置,所以目前执行的操作仅仅是代码压缩。 好,下面我们就看下合并输出配置
合并输出规则很多,对于简单的规则我们可以通过命令行来完成:
spm deploy --src=app --output.bootstrap=.
这个命令的含义就是输出bootstrap这个模块,并会合并他内部的依赖模块. 由于命令行参数有限制,对于有些输出规则不太好描述,更多规则可以参看 https://github.com/seajs/spm/issues/219 。
所以如果输出的模块比较多的话,通过配置文件的方式是更好的选择。 具体配置内容可以参看 output 配置详解 那么我们如何加载配置文件呢:
- 在js目录中添加 package.json 文件
- 通过 --global-config 进行加载.