-
Notifications
You must be signed in to change notification settings - Fork 10
/
fis-conf.js
157 lines (129 loc) · 3.02 KB
/
fis-conf.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/**
* @desc fis3配置文件
* @author zhangWuQiang
* @date 2017年09月12日
*/
var eslintConf = require('./conf/eslint.js');
var packConf = require('./conf/pack.js');
// 设置项目属性
fis.set('app.name', 'fis3-fee');
fis.set('app.root', '/');
fis.set('app.pkg', '/pkg');
fis.set('app.static', '/static');
fis.set('project.files', ['*.html', 'map.json']);
// 启用插件
fis.hook('relative');
// 让所有文件,都使用相对路径。
fis.match('*', {
relative: true
})
// 将views下的文件放根目录
// fis.match(/^\/views\/(.*\.*)$/i, {
// release: '$1'
// })
// 引入模块化开发插件,规范为 commonJs 规范。
fis.hook('commonjs', {
baseUrl: './modules',
extList: ['.js', '.es']
});
/**
* ===================开发目录规范===================
*/
// ------ 关闭同名依赖 (true为打开) ------
fis.match('/views/**', {
useSameNameRequire: false
});
// ------ 全局配置 ------
fis.match('*.{js,es}', {
preprocessor: [
fis.plugin('js-require-file'),
fis.plugin('js-require-css', {
mode: 'dependency'
})
]
});
// ------ 配置图片压缩 ------
fis.match('**.png', {
optimizer: fis.plugin('png-compressor', {
type: 'pngquant'
})
});
// ------ 配置lib ------
fis.match('/lib/**.js', {
release: '${app.static}/$&'
});
// ------ 配置components ------
fis.match('/components/**', {
release: '${app.static}/$&'
});
fis.match('/components/**.css', {
isMod: true,
release: '${app.static}/$&'
});
fis.match('/components/**.js', {
isMod: true,
release: '${app.static}/$&'
});
// ------ 配置modules ------
fis.match('/modules/(**)', {
release: '${app.static}/$1'
})
// ------ 配置模拟数据 ------
fis.match('/mock/**', {
release: '$0'
});
fis.match('/mock/server.conf', {
release: '/config/server.conf'
});
/**
* ===================配置modules views 资源文件===================
*/
// ------ es6转码配置 ------
fis.match('/{views,modules}/**.{js,es,ts,tsx,jsx}', {
parser: fis.plugin('babel-5.x'),
rExt: 'js',
isMod: true,
release: '${app.pkg}/$0'
});
// ------ 配置scss ------
fis.match('/{views,modules}/**.scss', {
parser: fis.plugin('node-sass', {
include_paths: []
})
});
// ------ 配置less ------
fis.match('/{views,modules}/**.less', {
parser: fis.plugin('less', {
paths: []
})
});
// ------ 配置css------
fis.match('/{views,modules}/**.{scss,less,css}', {
rExt: '.css',
isMod: true,
release: '${app.pkg}/$0'
});
// ------ 配置img------
fis.match('/{views,modules}/**.{png,jpg,gif,svg}', {
useMap: true,
release: '${app.static}/$1'
});
// ------ 配置eslint------
fis.match('/{views,modules}/**.{js,es,ts,tsx,jsx}', {
lint: fis.plugin('noob-eslint', eslintConf)
})
/**
* ===================打包规范===================
*/
fis.match('::package', {
// __RESOURCE_MAP__
postpackager: fis.plugin('loader', {
resourceType: 'commonJs',
useInlineMap: true // 资源映射表内嵌
})
});
// release
var media = fis.env()._media;
if (media !== 'dev') {
packConf[media](media);
}