UNPKG

1.6 kBJavaScriptView Raw
1/*global fis*/
2/*
3* 精简打包逻辑,适配特定的业务场景
4 */
5
6var DEF_CONF = {
7 // 脚本占位符
8 scriptPlaceHolder: '<!--SCRIPT_PLACEHOLDER-->',
9
10 // 样式占位符
11 stylePlaceHolder: '<!--STYLE_PLACEHOLDER-->',
12
13 // 资源占位符
14 resourcePlaceHolder: '<!--RESOURCEMAP_PLACEHOLDER-->',
15
16 output: 'pkg/${id}_min.js',
17
18 // 自动打包资源
19 autoPack: false,
20
21 ignore: [], // 不打包的模块
22
23 ignoreDict: {},
24
25 // css 打包成一个文件,适合单页面应用
26 cssAllInOne: false,
27 // css 内嵌到html中
28 cssInline: false,
29
30 // common css,业务自行处理打包,其他打成一个page包
31 commonCssGlob: /\/?common\//
32};
33
34
35var _ = fis.util;
36var Page = require('./lib/page');
37
38module.exports = function(ret, pack, settings, opt) {
39
40
41 var files = ret.src,
42 conf = _.assign({}, DEF_CONF, settings);
43
44 (conf.ignore || []).forEach(function(ignore) {
45 conf.ignoreDict[ignore] = 1;
46 });
47
48 conf.idMaps = fis.get('idMaps') || {};
49 Page.combineCache = {};
50
51 var urlmapping = ret.urlmapping = {};
52 Object.keys(files).forEach(function(subpath) {
53 var file = files[subpath];
54 if (file.release) {
55 urlmapping[file.getUrl()] = file;
56 }
57 });
58
59 Object.keys(files).forEach(function(subpath) {
60 var file = files[subpath];
61 if ((file.isHtmlLike || file.ext === '.vm') && !file.page) {
62 file.page = new Page(file, ret, conf); // 实例化一个页面
63 }
64 });
65
66};