UNPKG

yqb

Version:

Static Package Manager

215 lines (207 loc) 5.41 kB
/* * fis3 构建配置文件 * author: <%= author %> * version: <%= version %> */ var appName = '<%= name %>', // 项目名 debugDeployDirectory = 'deployed', // debug产出代码目录 compileDeployDirectory = '../../webroot/activity/h5'; // 产线产出目录 fis.util.mkdir(debugDeployDirectory); /* * 配置建构过程包含的资源文件 */ // 源码包含设置 fis.config.set('project.files', [ '*.html', 'framework/**', 'app/**', 'favicon.ico' ]); // 源码排除设置 fis.config.set('project.ignore', [ 'framework/bower_components/**', 'node_modules/**', debugDeployDirectory + '/**' ]); /* * 配置文件编译策略 * 使用如下fis插件 */ fis .match("**", { release: appName + '/$0' }) // 设置less的编译 // 注: 配置该插件后,本地的sublime可以不用安装lesstocss插件,建议直接编辑less文件,使用less的扩展动态语法 .match('**.less', { parser: fis.plugin('less'), rExt: '.css' }) // es6 .match('app/js/*.js', { parser: fis.plugin('es6-babel'), rExt: '.js' }) .match('framework/download/download.es', { parser: fis.plugin('es6-babel'), rExt: '.js' }) .match('framework/dialog/dialog.es', { parser: fis.plugin('es6-babel'), rExt: '.js' }) .match('framework/system/enviroment.es', { parser: fis.plugin('es6-babel'), rExt: '.js' }) .match('framework/paf/ajax.js', { parser: fis.plugin('es6-babel'), rExt: '.js' }) // 静态资源优化插件 .match('*.js', { // fis-optimizer-uglify-js 插件进行压缩,已内置 optimizer: fis.plugin('uglify-js') }).match('{*.less,*.css}', { // fis-optimizer-clean-css 插件进行压缩,已内置 optimizer: fis.plugin('clean-css') }).match('*.png', { // fis-optimizer-png-compressor 插件进行压缩,已内置 optimizer: fis.plugin('png-compressor', { type: 'pngquant' //default is pngcrush }) }) // 配置相对路径的插件,调整所有静态资源引用为相对路径引用 .hook('relative') .match('**', { relative: true }) .match('/*.html', { relative: '/' + appName // 调整为基于页面地址的相对路径 }) .match('*.js', { relative: '/' + appName // 调整为基于页面地址的相对路径 }) // 为了保持对外访问入口页面url不变,即排除入口html页面的md5后缀设置 .match('**', { useHash: true }) .match('*.html', { useHash: false }); /* * 配置合并打包策略 */ var seajs = 'node_modules/seajs/dist/sea.js'; var jquery = 'node_modules/jquery/dist/jquery.js'; var zepto = 'node_modules/zepto/zepto.min.js'; var reset = 'node_modules/reset.css/reset.css'; var animate = 'node_modules/animate.css/animate.css'; fis // 框架层合并配置: framework.js、 framework.css .match(jquery, { packTo: 'framework/framework.js' }) // .match(zepto, { // packTo: 'framework/zepto.js' // }) .match('framework/css/base.css', { packTo: 'framework/framework.css' }) .match(reset, { packTo: 'framework/framework.css' }) // .match(animate, { // packTo: 'framework/animate.css' // }) // .match('framework/css/button.css', { // packTo: 'framework/framework.css' // }) // .match('framework/paf/pafui.css', { // packTo: 'framework/framework.css' // }) .match('framework/paf/ajax.js', { packTo: 'framework/paf.js' }) // 组件层合并配置: component.js、 component.css .match('framework/webCollection/webCollection.js', { packTo: 'framework/component.js' }) // .match('framework/system/enviroment.js', { // packTo: 'framework/component.js' // }) // .match('framework/register/otp.js', { // packTo: 'framework/component.js' // }) // .match('framework/register/register.css', { // packTo: 'framework/component.css' // }) .match('framework/dialog/dialog.css', { packTo: 'framework/component.css' }) .match('framework/dialog/dialog.js', { packTo: 'framework/component.js' }) .match('framework/tips/tips.css', { packTo: 'framework/component.css' }) .match('framework/tips/tips.js', { packTo: 'framework/component.js' }) .match('framework/share/share.css', { packTo: 'framework/component.css' }) .match('framework/share/jquery.qrcode.min.js', { packTo: 'framework/component.js' }) .match('framework/share/share.js', { packTo: 'framework/component.js' }) .match('framework/download/download.js', { packTo: 'framework/component.js' }) // ---------------------------------- // 应用层合并配置:app.js、 app.css // 自动替换合并文件的插件 .match('::packager', { postpackager: fis.plugin('loader', { allInOne: true }) }); /* * 在各不同环境下不同的文件编译配置及deploy策略 */ var deploySelector = '{framework/*.css,framework/*.js,framework/images/**,app/images/**,app/js/**,app/css/**,*.html,*.ico}'; // 本地环境不混淆静态资源 fis.media('dev') .match('*.js', { optimizer: null }).match('{*.less,*.css}', { optimizer: null }).match('*.html', { optimizer: null }) // 本地联调部署在{debugDeployDirectory}目录 .match(deploySelector, { deploy: [ fis.plugin('local-deliver', { to: debugDeployDirectory }) ] }); // 测试环境需要打成zip包 fis.media('build') .match('*.izip', { useHash: false, release: '$0' }) .match(deploySelector, { deploy: [ fis.plugin('zip', { filename: appName + '.izip' }), fis.plugin('local-deliver', { to: compileDeployDirectory }) ] });