var path = require('path') var fs = require('fs'); var webConfig = require('./web.json'); var autoprefixer = require('autoprefixer'); var pxtorem = require('postcss-pxtorem'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); var runConfig = fs.existsSync(path.resolve('../run.json')) ? require('../run.json') : {}; var postcssOpts = { ident: 'postcss', plugins: () => [ autoprefixer({ browsers: ['last 2 versions', 'Firefox ESR', '> 1%', 'ie >= 8', 'iOS >= 8', 'Android >= 4'], }), pxtorem({ rootValue: 100, propWhiteList: [] }) ] }; module.exports = { // require('image!xx') 寻址目录列表 imageAssets: [], // 客户端代码打包入口文件 clientContextEntry: path.resolve('server/express/react/client.js'), // 服务端代码打包入口文件 serverContextEntry: path.resolve(webConfig.indexWeb), // 别名配置 alias: { 'mycroft-run-main':runConfig.entry, 'logger': path.resolve('server/framework/logger/index.js'), 'app-context': path.resolve('server/framework/env/enviroment.js') }, //babelrc 追加配置 babelrc: { plugins: [ [require.resolve("babel-plugin-import"), [{ "libraryName": "sherlock-mind" }]] ] }, //webpack 追加配置 webpack: { module: { loaders: [ { test: /\.(svg)$/i, loader: 'web-svg-sprite-loader', include: function (file) { return /(antd-mobile|sherlock)/.test(file) || !/node_modules/.test(file); } }, { test: /\.css$/i, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: [ 'css-loader', { loader: 'postcss-loader', options: postcssOpts } ] }) } ] }, plugins: [ new ExtractTextPlugin({ filename: '[name].css', allChunks: true }), ] }, //服务端指定后缀名文件自定义模块载入处理 serverResolves: { css: function (filename) { return ''; }, svg: function (filename) { return path.parse(filename).name; } }, //指定哪些扩展名为静态资源 static: function (exts) { //移除svg var index = exts.indexOf(".svg"); index > -1 ? exts.splice(index, 1) : undefined; return exts; }, /** * 开发环境是否node_modules下所有文件都使用babel编译 * 如果设置成true 则无需设置es6Modules 但是会导致开发环境启动速度变慢 * 如果设置成false 当你的项目的依赖模块是es6的代码 * 可以在es6Modules 下设置白名单 */ compileAll: true, /** * node_modules下需要编译成es6的模块 * 始终包含 /react-native-/ 开头的模块 * 每个想值为正则表达式 例如: /sherlock-/ 使用babel编译node_modules目录下 * 所有以sherlock-开头的模块 */ es6Modules: [ ], //发布忽略列表 ignores: [ ], // 图片压缩配置 minOptions: { contextName: webConfig.cdnVariableName, gifsicle: { interlaced: false }, optipng: { optimizationLevel: 7 }, pngquant: { quality: '65-90', speed: 4 }, mozjpeg: { progressive: true, quality: 65 } } }