Skip to content

Commit 266e176

Browse files
author
AceMood
committed
make readme
1 parent 7b8ec46 commit 266e176

File tree

6 files changed

+152
-123
lines changed

6 files changed

+152
-123
lines changed

README.md

+5-97
Original file line numberDiff line numberDiff line change
@@ -151,75 +151,13 @@ __Miscellaneous__
151151
的less文件名改成`_`开头, 在产出时不会产生空文件. 另一种做法是配置扫描器的ignorePaths属性或者插件的ignore属性(内置插件都
152152
支持), 这个函数可以接受文件的工程路径作为参数, 返回true则表示忽略此资源.
153153

154-
### 配置
154+
### 配置 soi
155155

156-
soi 通过命令行执行操作, 默认当前目录为所要扫描的工程目录。在配置文件中通过全局soi对象提供的api进行配置, 全部方法可以从[这里找到](./doc/soi.api.md), 常用方法有:
156+
**soi** 通过命令行执行操作, 默认当前目录为所要扫描的工程目录。在配置文件中通过全局soi对象提供的api进行配置, 全部方法可以从[这里找到](./doc/api/soi.md).
157157

158-
### soi.addRule(pattern, option)
159-
160-
* **pattern {string|Regexp}** 匹配模式, glob string或者正则
161-
* **option {object}**
162-
* **to {function|string}** 线上路径
163-
164-
为多个构建任务添加全局共享的打包路径规则, 例
165-
166-
```
167-
soi.addRule(/src\/(.*)\/(.*)/, {
168-
to : function($0, $1, $2) {
169-
return [domain + '/static', $1, $2].join('/');
170-
}
171-
})
172-
```
173-
会匹配工程目录下路径类似`src/js/jquery.js`的所有资源, 将其线上打包路径设置为`https://s0.db.com/static/js/jquery.js`. addRule的第二个参数的`to`也可以为一个字符串配置, 例
174-
175-
```
176-
soi.addRule(/src\/(.*)\/(.*)/, {
177-
to: '/static/$1/'
178-
})
179-
```
180-
181-
注意:
182-
183-
1. task.addRule第二个参数传字符串不用自己拼接domain的设置, soi会自动加上为task设置的domain属性. 但是如果第二个参数传函数就需要自己拼接.
184-
2. task.addRule第二个参数传字符串, 无需考虑文件名字, 只需指定目录即可, 若`to`最后未加上系统的目录分隔符, 构建工具也会自行加上
185-
186-
187-
### soi.config.get
188-
189-
### soi.config.set
190-
191-
### soi.release.task(name, option)
192-
193-
* **name {string}** 构建任务的名称
194-
* **option {object}** 任务配置对象
195-
* **dir {string}** 相对工程目录的目录地址, 用于存放打包后的静态文件
196-
* **mapTo {string}** 相对工程目录的目录地址, 用于存放打包后的资源表文件
197-
* **domain {string}** 资源线上cdn的地址, 如 'https://s0.bdstatic.com/'
198-
* **scandirs {Array.<string>}** 扫描的相对工程目录的目录, 如 `['src']`
199-
* **loaders {Array.<ResourceLoader>}** 要扫描的文件类型, 不同类型对应soi.Loaders的一个属性, 传入即可, 如
200-
201-
``` javascript
202-
[
203-
new soi.Loaders.JSLoader(),
204-
new soi.Loaders.CSSLoader()
205-
]
206-
```
207-
208-
* **pack {object}** 文件合并配置, 需要和packger插件配合使用, 配置是参考如下代码:
209-
210-
``` javascript
211-
{
212-
'/static/pkg/build.css': ['src/css/*.css'],
213-
'/static/pkg/build.js': ['src/app/*.js']
214-
}
215-
```
216-
217-
* **preserveComments {boolean}** 打包是否保留注释
218-
219-
生成一个release类型的task, 用于构建工程目录下的代码. 第一个参数传递task的名称, 第二个参数传递
220-
221-
### soi.deploy.task
158+
### 配置 task
222159

160+
**soi** 通过命令行执行操作, 默认当前目录为所要扫描的工程目录。在配置文件中通过全局soi对象提供的api进行配置, 全部方法可以从[这里找到](./doc/api/task.md).
223161

224162
## 预处理器
225163

@@ -239,37 +177,7 @@ soi.addRule(/src\/(.*)\/(.*)/, {
239177

240178
## 插件体系
241179

242-
soi 内部集成了如下插件, 无需安装其他模块可直接使用:
243-
244-
### modulewrapper
245-
246-
结合[kerneljs](https://github.com/AceMood/kerneljs/)模块加载器的代码wrapper功能, 将普通代码封装为CommanJS格式。简单场景可以使用。
247-
248-
### modux
249-
250-
结合[modux](https://github.com/AceMood/modux/)模块加载器的代码wrapper功能, 将普通代码封装为amdJS格式。modux是最新的加载器实现, 基于资源表能够更好的和工程化结合, 提升异步加载速度以及模块定义相关操作的稳定性, gzip后该库大小在**1.4kb**左右。
251-
252-
### uglifier
253-
254-
255-
256-
### replacer
257-
258-
259-
260-
### clean-css
261-
262-
263-
264-
### idgenerator
265-
266-
267-
268-
### fingerprint
269-
270-
271-
272-
### packager
180+
soi 内部集成了前端构建常用插件, 无需安装其他模块可直接使用。包括对模块加载器[modux](https://github.com/AceMood/modux)的支持, js最小化的UglifyJS插件, css最小化的cleanCss插件等。更多说明请[移步这里](./doc/plugins.md)
273181

274182

275183
## 最后

doc/api/soi.md

+115
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
## 属性
2+
3+
#### soi.Loaders
4+
5+
6+
7+
## 方法
8+
9+
#### soi.addRule(pattern, option): soi
10+
11+
* **pattern {string|Regexp}** 匹配模式, glob string或者正则
12+
* **option {object}**
13+
* **to {function|string}** 线上路径
14+
15+
为多个构建任务添加全局共享的打包路径规则, 例
16+
17+
```
18+
soi.addRule(/src\/(.*)\/(.*)/, {
19+
to : function($0, $1, $2) {
20+
return [domain + '/static', $1, $2].join('/');
21+
}
22+
})
23+
```
24+
会匹配工程目录下路径类似`src/js/jquery.js`的所有资源, 将其线上打包路径设置为`https://s0.db.com/static/js/jquery.js`. addRule的第二个参数的`to`也可以为一个字符串配置, 例
25+
26+
```
27+
soi.addRule(/src\/(.*)\/(.*)/, {
28+
to: '/static/$1/'
29+
})
30+
```
31+
32+
注意:
33+
34+
1. task.addRule第二个参数传字符串不用自己拼接domain的设置, soi会自动加上为task设置的domain属性. 但是如果第二个参数传函数就需要自己拼接.
35+
2. task.addRule第二个参数传字符串, 无需考虑文件名字, 只需指定目录即可, 若`to`最后未加上系统的目录分隔符, 构建工具也会自行加上
36+
37+
#### soi.addCompiler(resourceType, compiler): void
38+
39+
* **resourceType {string}** 资源类型, 可以是css, js, image, font的一种或自定义的类型
40+
* **compiler {object}** 编译函数对象
41+
42+
针对特定类型资源添加编译函数. compiler对象必须含有`exec`的函数, 在编译过程中, 流程会将当前编译资源resource,
43+
当前资源表对象task.map, 线上路径生成规则hit, 以及构建流程自身task通过形参传递给`exec`函数完成编译.
44+
45+
一般情况下不需要覆盖常规的资源类型的编译对象, soi内置的编译函数会妥当处理资源的编译. 若需要添加自定义类型则可参考
46+
[js compiler](https://github.com/Saber-Team/soi/blob/master/lib/compiler/js.js).
47+
48+
#### soi.getCompiler(resourceType): compiler
49+
50+
返回特定资源的编译器对象. compiler只是一个Object的实例且包含`exec`方法.
51+
52+
#### soi.config.get
53+
54+
#### soi.config.set
55+
56+
#### soi.release.task(name, option): ReleaseTask
57+
58+
* **name {string}** 构建任务的名称
59+
* **option {object}** 任务配置对象
60+
* **dir {string}** 相对工程目录的目录地址, 用于存放打包后的静态文件
61+
* **mapTo {string}** 相对工程目录的目录地址, 用于存放打包后的资源表文件
62+
* **domain {string}** 资源线上cdn的地址, 如 'https://s0.bdstatic.com/'
63+
* **scandirs {Array.\<string\>}** 扫描的相对工程目录的目录, 如 `['src']`
64+
* **loaders {Array.<ResourceLoader>}** 要扫描的文件类型, 不同类型对应soi.Loaders的一个属性, 传入即可, 如
65+
66+
``` javascript
67+
[
68+
new soi.Loaders.JSLoader(),
69+
new soi.Loaders.CSSLoader()
70+
]
71+
```
72+
73+
* **pack {object}** 文件合并配置, 需要和packger插件配合使用, 配置是参考如下代码:
74+
75+
``` javascript
76+
{
77+
'/static/pkg/build.css': ['src/css/*.css'],
78+
'/static/pkg/build.js': ['src/app/*.js']
79+
}
80+
```
81+
82+
* **preserveComments {boolean}** 打包是否保留注释
83+
84+
返回生成的release类型的task, 用于构建工程目录下的代码. ReleaseTask的相关API可以[看这里](./doc/api/task.md)
85+
86+
#### soi.deploy.task(name, option): DeployTask
87+
88+
* **name {string}** 构建任务的名称
89+
* **option {object}** 任务配置对象
90+
* **dir {string}** 相对工程目录的目录地址, 用于存放打包后的静态文件
91+
* **mapTo {string}** 相对工程目录的目录地址, 用于存放打包后的资源表文件
92+
* **domain {string}** 资源线上cdn的地址, 如 'https://s0.bdstatic.com/'
93+
* **scandirs {Array.\<string\>}** 扫描的相对工程目录的目录, 如 `['src']`
94+
* **loaders {Array.<ResourceLoader>}** 要扫描的文件类型, 不同类型对应soi.Loaders的一个属性, 传入即可, 如
95+
96+
``` javascript
97+
[
98+
new soi.Loaders.JSLoader(),
99+
new soi.Loaders.CSSLoader()
100+
]
101+
```
102+
103+
* **pack {object}** 文件合并配置, 需要和packger插件配合使用, 配置是参考如下代码:
104+
105+
``` javascript
106+
{
107+
'/static/pkg/build.css': ['src/css/*.css'],
108+
'/static/pkg/build.js': ['src/app/*.js']
109+
}
110+
```
111+
112+
* **preserveComments {boolean}** 打包是否保留注释
113+
* **watch {boolean}** 是否实时根据代码改动进行构建
114+
115+
返回生成的release类型的task, 用于构建工程目录下的代码. DeployTask的相关API可以[看这里](./doc/api/task.md)

doc/api/task.md

Whitespace-only changes.

doc/plugins.md

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
## modulewrapper
2+
3+
结合[kerneljs](https://github.com/AceMood/kerneljs/)模块加载器的代码wrapper功能, 将普通代码封装为CommanJS格式。简单场景可以使用。
4+
5+
## modux
6+
7+
结合[modux](https://github.com/AceMood/modux/)模块加载器的代码wrapper功能, 将普通代码封装为amdJS格式。modux是最新的加载器实现,
8+
基于资源表能够更好的和工程化结合, 提升异步加载速度以及模块定义相关操作的稳定性, gzip后该库大小在**1.4kb**左右。
9+
10+
## uglifier
11+
12+
js代码压缩工具
13+
14+
## replacer
15+
16+
17+
18+
## clean-css
19+
20+
css代码压缩工具
21+
22+
## idgenerator
23+
24+
25+
26+
## fingerprint
27+
28+
为静态资源打上唯一名标识, 且将代码中的引用地址全部替换. 在PC的产品中, 可以为资源加上大于1个月的强缓存头提升二次浏览性能.
29+
在移动端项目中可以根据唯一版本号生成service-worker或者localStorage的缓存版本.
30+
31+
## packager

doc/soi.api.md

-8
This file was deleted.

soi.js

+1-18
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,8 @@
33
*
44
* Copyright (c) 2016 Saber-Team
55
*
6-
* Permission is hereby granted, free of charge, to any person obtaining a copy
7-
* of this software and associated documentation files (the "Software"), to deal
8-
* in the Software without restriction, including without limitation the rights
9-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10-
* copies of the Software, and to permit persons to whom the Software is
11-
* furnished to do so, subject to the following conditions:
12-
*
13-
* The above copyright notice and this permission notice shall be included in all
14-
* copies or substantial portions of the Software.
15-
*
16-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22-
* SOFTWARE.
23-
*
246
* @author AceMood
7+
258
*/
269

2710
'use strict';

0 commit comments

Comments
 (0)