Skip to content
This repository was archived by the owner on Aug 15, 2018. It is now read-only.

Spm build 之自定义目录结构

leoner edited this page Oct 16, 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目录中执行.

必选

  1. 源文件
  2. 模块输出配置

这两个是必须提供的,其中我们提供了多种方式来让用户指定这两个参数:

源文件

spm deploy --src=app --local=../../

执行完这个命令后就会把app下面的代码进行简单的处理,部署到assets目录中了。不过由于缺少模块输出配置,所以目前执行的操作仅仅是代码压缩。 好,下面我们就看下合并输出配置

合并输出

合并输出规则很多,对于简单的规则我们可以通过命令行来完成:

spm deploy --src=app --output.bootstrap=.

这个命令的含义就是输出bootstrap这个模块,并会合并他内部的依赖模块. 由于命令行参数有限制,对于有些输出规则不太好描述,更多规则可以参看 https://github.com/seajs/spm/issues/219

所以如果输出的模块比较多的话,通过配置文件的方式是更好的选择。 具体配置内容可以参看 output 配置详解 那么我们如何加载配置文件呢:

  1. 在js目录中添加 package.json 文件
  2. 通过 --global-config 进行加载.

Clone this wiki locally