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
| const path = require('path'); const glob = require('glob'); const title = '测试页面'; const addStyleResource = rule => { rule .use('style-resource') .loader('style-resources-loader') .options({ patterns: [path.resolve(__dirname, './src/css/config.less')] }); };
const getPages = () => { const pages = {}; glob.sync('./src/page/**/*.[jt]s?(x)').forEach(item => { const filename = item.match(/\.\/src\/page\/(\S*).[jt]s?x?/)[1]; pages[filename] = { title, entry: item, template: `public/${filename}.html`, filename: `${filename}`, chunks: ['common', filename], chunksSortMode: 'manual', inject: true }; }); return pages; };
module.exports = { pages: getPages(), outputDir: './static', assetsDir: './', filenameHashing: false, productionSourceMap: false, configureWebpack: { resolve: { alias: { '@css': path.join(__dirname, 'src/css'), '@router': path.join(__dirname, 'src/router'), '@component': path.join(__dirname, 'src/components'), '@page': path.join(__dirname, 'src/page') } } }, chainWebpack: config => { config.plugins.delete('preload'); config.plugins.delete('prefetch');
config.module .rule('images') .use('url-loader') .loader('url-loader') .tap(options => Object.assign(options, { limit: 1024 * 80, publicPath: '../../' }));
config.module .rule('images') .use('image-webpack-loader') .loader('image-webpack-loader') .options({ quality: '65-80' }) .end();
const types = ['vue-modules', 'vue', 'normal-modules', 'normal']; types.forEach(type => addStyleResource(config.module.rule('less').oneOf(type)));
config.module.rule('ts').use('babel-loader');
config.module .rule('less') .oneOf('normal') .use('px2rem-loader') .loader('px2rem-loader') .before('postcss-loader') .options({ remUnit: 37.5, remPrecision: 8 }) .end(); }, css: { modules: false, extract: false, sourceMap: false, loaderOptions: { css: {}, postcss: {} } }, devServer: { open: true, host: '127.0.0.1', port: 3000, https: false, hotOnly: false, proxy: null, before: app => { } }, parallel: require('os').cpus().length > 1 };
|