generator-zl-fis3-less
Version:
基于 Yeoman 的 FIS3 主题模板制作框架初始化脚手架
137 lines (118 loc) • 4.17 kB
JavaScript
/**
* Created by Dzl on 2017-1-17.
* 基于 FIS3 的 less 开发环境
* 应用于 主题模板库 的开发设计
*/
/************************* 环境变量 *****************************/
fis
// 设置打包产出的路径
.set('domain','/assets/design/')
// 排除指定目录
.set('project.ignore', [
'node_modules/**',
'output/**',
//'dist/**',
'dist-zip/**',
'soft/**',
'assets**',
'bak/**',
'.gitignore',
'**/_*.scss',
'**/_*.less',
'.docs/**',
'.dist/**',
'.git/**',
'.svn/**',
'fis-conf.**',
'package.json'
]);
// 如果是 prod 方式打包, 先在打包前先删除 ./dist 目录
if(fis.project.currentMedia() === 'prod'){
if(fis.util.realpath('./dist')){
console.log('dist path is exist! start del dist >>>');
fis.util.del('./dist');
console.log('dist is del ' + !fis.util.realpath('./dist'))
}
}
// 启用相对路径插件
// https://github.com/fex-team/fis3-hook-relative
// cnpm i [--save-dev|-g] fis3-hook-relative
fis.hook('relative');
// 让所有 CSS 文件、html 中内嵌的 CSS 、以及 html 元素中使用的 style 中的样式,都使用相对路径。
fis
.match('**.{less,css}', {
relative: true
})
// 匹配命中的 html 文件中内嵌的 css 部分
.match('**.html:css', {
relative: true
})
// 匹配命中的 html 文件中的内联样式
.match('**.html:inline-style', {
relative: true
});
/************************* 编译配置 *****************************/
// https://github.com/fouber/fis-parser-less-2.x
// https://github.com/less/less.js
// cnpm install (-g|--save-dev) fis-parser-less-2.x
// 要使用此插件,需要全局安装 less
// cnpm install -g less
fis.match('/page/web*/css/*.{less,css}', {
relative: true,
rExt: '.css', // from .less to .css
parser: fis.plugin('less-2.x', {
// fis-parser-less-2.x option
}),
release: '${domain}$0$1'
});
fis.match('/page/**', {
release: '${domain}$0'
});
fis.match('/css/**.css', {
release: '/assets/$0'
});
fis.match('/js/**', {
release: '/assets/$0'
});
// #{specialPath} 正式发布时, 不再有 web1 这样的固定目录
// 需要使用 #{specialPath} 进行替换掉 *.html 中的 web1 名称
// 所有的 css 中的资源引用在打包时相对路径进行打包
// 生产环境打包
fis.media('prod')
.match('page/web1/**',{
deploy:[
// https://github.com/fex-team/fis3-deploy-replace
fis.plugin('replace',{
from: /\/assets\/design\/page\/web1\//ig,
to: function () {
return '/assets/design/page/#{specialPath}/';
}
// from: /\/page\/web1\//ig,
// to: function () {
// return '/page/#{specialPath}/';
// }
})
,fis.plugin('local-deliver') // 发布到本地,由 -d 参数制定目录
]
});
// 此处一定要注意, 不能使用 /page/web1/** , 如果使用则上一步 html 中的替换则无效了
// 必须针对已经打包成功后的 /dist 进行匹配
// 由于 fis3-deploy-replace 和 fis3-deploy-zl-zip 不能串联操作
// 只好做了两个打包环境
// 先由 prod 执行替换操作, 然后再由 prod-zip 来打包已经替换生成的 dist 目录下的文件
// 执行的命令: fis3 release prod -d ./dist && fis3 release prod-zip -d ./dist-zip
// 已经配置到 package.json 中 npm run prod-zip
fis.match('/dist/**', {
isMod:false
});
fis.media('prod-zip')
.match('/dist/assets/design/page/web1/**',{
deploy: [
// https://www.npmjs.com/package/fis3-deploy-zl-zip
fis.plugin('zl-zip',{
filename: 'web1.zip',
startWithPath: '/dist/assets/design/page/web1/'
}),
fis.plugin('local-deliver')
]
});