var version = '/1.0.0/'; var path = '/zt2019/2019chinajoy'; fis.set('project.files', ['*.html', 'map.json']); fis.set('project.exclude', ['tpl/**.tmpl', '_dest/**']); fis.hook('commonjs', { baseUrl: './src/modules', extList: ['.js'] }); // 开启同名依赖 fis.match('**.js', { useSameNameRequire: true, parser: fis.plugin('babel-5.x', { blacklist: ["useStrict"], ignore: ["jQuery"] }) }); // fis.match('/lib/**.js', { // release: version + '/$1', // packTo: 'lib.js' // }); // 允许你在 js 中直接 require css+文件 fis.match('*.{js,es}', { preprocessor: [ fis.plugin('js-require-file'), fis.plugin('js-require-css', { mode: 'dependency' }) ] }); /*设置发布路径*/ fis.match(/^\/src\/(.*)/i, { release: version + '/$1', // url: version + '/$1' }); // 配置图片压缩 fis.match('**.png', { optimizer: fis.plugin('png-compressor', { type: 'pngquant' }) }); /*Sprite背景图移到staticPub/images*/ fis.match(/^\/sass\/(.*\.(png|jpg|gif|jpeg))$/i, { release: 'img/sprite/$1', url: 'img/sprite/$1' }); fis.match(/^\/src\/sass\/((.*)\.(css|less|scss|sass))$/i, { rExt: '.css', useSprite: true, parser: fis.plugin('node-sass'), postprocessor: fis.plugin('autoprefixer', { browsers: ['> 1%', 'last 2 versions'], cascade: true }), release: version + '/css/$1', url: './css/$1' }).match('_*.scss', { release: false }) /*对CSS中的图片进行合并,包括html中的内联样式*/ fis.match('*.{css,html,tpl}', { useSprite: true, }); fis.match('*.tmpl', { isJsLike: true, release: false, parser: fis.plugin('utc') }) fis.match(/^\/src\/modules\/(.*\.js)$/i, { isMod: true }); /*css压缩*/ fis.match('*.css', { optimizer: fis.plugin('clean-css') }); /*启用 fis-spriter-csssprites 插件*/ fis.match('::package', { spriter: fis.plugin('csssprites',{ margin: 20, htmlUseSprite: true,/*开启模板内联css处理*/ styleReg: /(|>))([\s\S]*?)(<\/style\s*>|$)/ig }), postpackager: fis.plugin('loader', { resourceType: 'commonJs', useInlineMap: true // 资源映射表内嵌 }) }); /*图片文件域名配置*/ fis.media('dev').match('*.{jpg,png,jpeg,gif,css,js}', { domain: '../../', }); fis.media('prod').match('*.{jpg,png,jpeg,gif,css,scss,js,woff,ttf,svg,eot}', { domain: 'http://pub.dwstatic.com' + path, }).match('::package', { postpackager: fis.plugin('loader', { allInOne: { resourceType: 'mod', js: function (file) { return version + 'js/' + file.filename + ".js"; }, css: function (file) { return version + 'css/' + file.filename + ".css"; } }, resoucemap: version + 'js/${filepath}_map.js', }) }).match('*.{js,css,png,jpg,gif,swf}', { useHash: true }).match('*.js', { optimizer: fis.plugin('uglify-js',{ mangle: { except: 'exports, module, require, define' } }) }).match(/^\/src\/modules\/(.*\.js)$/i, { useHash: false }).match(/^\/src\/sass\/((.*)\.(css|less|scss|sass))$/i, { url: version + 'css/$1', optimizer: fis.plugin('clean-css'), useHash: true }).match('sass/(**.png)', { release: version + 'img/sprite/$1' });