"use strict";(self.webpackChunkfes_js=self.webpackChunkfes_js||[]).push([[960],{5822:(n,s,a)=>{a.r(s),a.d(s,{data:()=>e});const e={key:"v-2c05b6e0",path:"/reference/config/",title:"配置",lang:"zh-CN",frontmatter:{sidebar:"auto"},excerpt:"",headers:[{level:2,title:"alias",slug:"alias",children:[]},{level:2,title:"analyze",slug:"analyze",children:[]},{level:2,title:"autoprefixer",slug:"autoprefixer",children:[]},{level:2,title:"base",slug:"base",children:[]},{level:2,title:"chainWebpack",slug:"chainwebpack",children:[]},{level:2,title:"cssLoader",slug:"cssloader",children:[]},{level:2,title:"copy",slug:"copy",children:[]},{level:2,title:"define",slug:"define",children:[]},{level:2,title:"devServer",slug:"devserver",children:[]},{level:2,title:"devtool",slug:"devtool",children:[]},{level:2,title:"dynamicImport",slug:"dynamicimport",children:[]},{level:2,title:"exportStatic",slug:"exportstatic",children:[]},{level:2,title:"externals",slug:"externals",children:[]},{level:2,title:"extraBabelPlugins",slug:"extrababelplugins",children:[]},{level:2,title:"extraBabelPresets",slug:"extrababelpresets",children:[]},{level:2,title:"extraPostCSSPlugins",slug:"extrapostcssplugins",children:[]},{level:2,title:"html",slug:"html",children:[]},{level:2,title:"inlineLimit",slug:"inlinelimit",children:[]},{level:2,title:"lessLoader",slug:"lessloader",children:[]},{level:2,title:"mock",slug:"mock",children:[]},{level:2,title:"mountElementId",slug:"mountelementid",children:[]},{level:2,title:"nodeModulesTransform",slug:"nodemodulestransform",children:[]},{level:2,title:"outputPath",slug:"outputpath",children:[]},{level:2,title:"plugins",slug:"plugins",children:[]},{level:2,title:"postcssLoader",slug:"postcssloader",children:[]},{level:2,title:"proxy",slug:"proxy",children:[]},{level:2,title:"publicPath",slug:"publicpath",children:[]},{level:2,title:"router",slug:"router",children:[]},{level:2,title:"singular",slug:"singular",children:[]},{level:2,title:"targets",slug:"targets",children:[]},{level:2,title:"terserOptions",slug:"terseroptions",children:[]},{level:2,title:"vueLoader",slug:"vueloader",children:[]},{level:2,title:"更多配置项",slug:"更多配置项",children:[]}],filePathRelative:"reference/config/README.md",git:{updatedTime:1653450562e3,contributors:[{name:"wanchun",email:"445436867@qq.com",commits:1}]}}},502:(n,s,a)=>{a.r(s),a.d(s,{default:()=>On});var e=a(6252);const p=(0,e.uE)('

配置

以下配置项通过字母排序。

alias

export default {\n    alias: {\n       main: 'src/assets/styles/main'\n    }\n}\n
1
2
3
4
5

然后 import('main'),实际上是 import('src/assets/styles/main')

analyze

{\n    analyzerMode: process.env.ANALYZE_MODE || 'server',\n    analyzerPort: process.env.ANALYZE_PORT || 8888,\n    openAnalyzer: process.env.ANALYZE_OPEN !== 'none',\n    // generate stats file while ANALYZE_DUMP exist\n    generateStatsFile: !!process.env.ANALYZE_DUMP,\n    statsFilename: process.env.ANALYZE_DUMP || 'stats.json',\n    logLevel: process.env.ANALYZE_LOG_LEVEL || 'info',\n    defaultSizes: 'parsed' // stat  // gzip\n}\n
1
2
3
4
5
6
7
8
9
10

autoprefixer

{\n    flexbox: 'no-2009'\n}\n
1
2
3
',13),l=(0,e._)("p",null,"详情:",-1),t={href:"https://github.com/postcss/autoprefixer#options",target:"_blank",rel:"noopener noreferrer"},o=(0,e.Uk)("postcss autoprefixer 插件"),r=(0,e.Uk)(" 配置。"),c=(0,e.uE)('

base

chainWebpack

',3),i=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("类型:"),(0,e._)("code",null,"function")])],-1),u=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("默认值:"),(0,e._)("code",null,"null")])],-1),d=(0,e._)("p",null,"详情:",-1),k=(0,e.Uk)("通过 "),b={href:"https://github.com/neutrinojs/webpack-chain",target:"_blank",rel:"noopener noreferrer"},h=(0,e.Uk)("webpack-chain"),m=(0,e.Uk)(" 的 API 修改 webpack 配置。"),g=(0,e.uE)('

示例:

export default {\n    chainWebpack(memo, { env, webpack }) {\n        // 删除 fes 内置插件\n        memo.plugins.delete('copy');\n    },\n}\n
1
2
3
4
5
6

cssLoader

',3),v=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("类型: "),(0,e._)("code",null,"object")])],-1),y=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("默认值: "),(0,e._)("code",null,"''")])],-1),_=(0,e._)("p",null,"详情:",-1),f=(0,e.Uk)("设置 "),x={href:"https://github.com/webpack-contrib/css-loader#options",target:"_blank",rel:"noopener noreferrer"},j=(0,e.Uk)("css-loader 配置项"),U=(0,e.Uk)("。"),w=(0,e.uE)('

copy

export default {\n    copy: {\n        from: '/src/assets/images',\n        to: 'assets/images'\n    }\n}\n
1
2
3
4
5
6

上面示例中,实现了将 cwd 路径中的 /src/assets/images 文件夹,在编译完成后,copy 到输出路径下的 assets/images 文件夹。

define

export default {\n    define: {\n        __DEV__: 'development'\n    }\n}\n
1
2
3
4
5

然后你代码里写 console.log(__DEV__),会被编译成 console.log('development')

devServer

devtool

',11),E=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("类型: "),(0,e._)("code",null,"string")])],-1),A=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("默认值: "),(0,e._)("code",null,"cheap-module-source-map"),(0,e.Uk)(" in dev, "),(0,e._)("code",null,"undefined"),(0,e.Uk)(" in build")])],-1),L=(0,e._)("p",null,"详情:",-1),P=(0,e.Uk)("用户配置 sourcemap 类型。详见 "),N={href:"https://webpack.js.org/configuration/devtool/#devtool",target:"_blank",rel:"noopener noreferrer"},S=(0,e.Uk)(" webpack#devtool 配置"),W=(0,e.Uk)("。"),z=(0,e.uE)('

dynamicImport

exportStatic

配置 html 的输出形式,默认只输出 index.html

如果开启 exportStatic,则会针对每个路由输出 html 文件。

比如以下路由,

/\n/users\n/list\n
1
2
3

不开启 exportStatic 时,输出,

- index.html\n
1

设置 exportStatic: {} 后,输出,

- index.html\n- users.html\n- list.html\n
1
2
3

externals

示例:

export default {\n    externals: {\n      vue: 'window.Vue',\n    },\n}\n
1
2
3
4
5

extraBabelPlugins

配置额外的 babel 插件。

export default {\n    extraBabelPlugins: [\n        ['import', { libraryName: 'ant-design-vue', libraryDirectory: 'es', style: 'css' }],\n    ],\n}\n
1
2
3
4
5

extraBabelPresets

配置额外的 babel 插件集。

extraPostCSSPlugins

',25),O=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("类型: "),(0,e._)("code",null,"array")])],-1),D=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("默认值: "),(0,e._)("code",null,"[]")])],-1),Z=(0,e._)("p",null,"详情:",-1),T=(0,e.Uk)("设置额外的 "),Y={href:"https://github.com/postcss/postcss/blob/master/docs/plugins.md",target:"_blank",rel:"noopener noreferrer"},M=(0,e.Uk)("postcss 插件"),B=(0,e.Uk)("。"),C=(0,e._)("h2",{id:"html",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#html","aria-hidden":"true"},"#"),(0,e.Uk)(" html")],-1),I=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("类型: "),(0,e._)("code",null,"object")])],-1),V=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("默认值: "),(0,e._)("code",null,"{}")])],-1),q=(0,e._)("p",null,"详情:",-1),H=(0,e.Uk)("设置"),R={href:"https://github.com/jantimon/html-webpack-plugin#options",target:"_blank",rel:"noopener noreferrer"},F=(0,e.Uk)("html-webpack-plugin"),G=(0,e.Uk)("。"),$=(0,e.uE)('

inlineLimit

lessLoader

',3),J=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("类型: "),(0,e._)("code",null,"object")])],-1),K=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("默认值: "),(0,e._)("code",null,"{}")])],-1),Q=(0,e._)("p",null,"详情:",-1),X=(0,e.Uk)("设置 "),nn={href:"https://github.com/webpack-contrib/less-loader",target:"_blank",rel:"noopener noreferrer"},sn=(0,e.Uk)("less-loader 配置项"),an=(0,e.Uk)("。"),en=(0,e.uE)('

mock

export default {\n    mock: {\n        prefix: '/api/auth'\n    }\n}\n
1
2
3
4
5

然后所有以 /api/users 开始的请求,就能进入 mock.js 文件处理。

mountElementId

nodeModulesTransform

outputPath

提示

不允许设定为 srcpublicpages 等约定目录。

plugins

export default {\n  plugins: [\n    // npm 依赖\n    'fes-plugin-hello',\n    // 相对路径\n    './plugin',\n    // 绝对路径\n    `${__dirname}/plugin.js`,\n  ],\n};\n
1
2
3
4
5
6
7
8
9
10

postcssLoader

',15),pn=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("类型: "),(0,e._)("code",null,"object")])],-1),ln=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("默认值: "),(0,e._)("code",null,"{}")])],-1),tn=(0,e._)("p",null,"详情:",-1),on=(0,e.Uk)("设置 "),rn={href:"https://github.com/postcss/postcss-loader#options",target:"_blank",rel:"noopener noreferrer"},cn=(0,e.Uk)("postcss-loader 配置项"),un=(0,e.Uk)("。"),dn=(0,e.uE)('

proxy

export default {\n    proxy: {\n        '/v2': {\n            'target': 'https://api.douban.com/',\n            'changeOrigin': true, \n        }\n    }\n}\n
1
2
3
4
5
6
7
8
',3),kn=(0,e.Uk)("然后访问 "),bn=(0,e._)("code",null,"/v2/movie/in_theaters_proxy",-1),hn=(0,e.Uk)(" 就能访问到 "),mn={href:"http://api.douban.com/v2/movie/in_theaters_proxy",target:"_blank",rel:"noopener noreferrer"},gn=(0,e.Uk)("http://api.douban.com/v2/movie/in_theaters_proxy"),vn=(0,e.Uk)(" 的数据。"),yn=(0,e.uE)('

publicPath

router

singular

targets

terserOptions

const defaultTerserOptions = {\n    compress: {\n        // turn off flags with small gains to speed up minification\n        arrows: false,\n        collapse_vars: false, // 0.3kb\n        comparisons: false,\n        computed_props: false,\n        hoist_funs: false,\n        hoist_props: false,\n        hoist_vars: false,\n        inline: false,\n        loops: false,\n        negate_iife: false,\n        properties: false,\n        reduce_funcs: false,\n        reduce_vars: false,\n        switches: false,\n        toplevel: false,\n        typeofs: false,\n\n        // a few flags with noticeable gains/speed ratio\n        // numbers based on out of the box vendor bundle\n        booleans: true, // 0.7kb\n        if_return: true, // 0.4kb\n        sequences: true, // 0.7kb\n        unused: true, // 2.3kb\n\n        // required features to drop conditional branches\n        conditionals: true,\n        dead_code: true,\n        evaluate: true\n    },\n    mangle: {\n        safari10: true\n    }\n}\n
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
',11),_n=(0,e._)("p",null,"详情:",-1),fn=(0,e.Uk)("配置 "),xn={href:"https://github.com/terser/terser#minify-options",target:"_blank",rel:"noopener noreferrer"},jn=(0,e.Uk)("压缩器 terser 的配置项"),Un=(0,e._)("h2",{id:"vueloader",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#vueloader","aria-hidden":"true"},"#"),(0,e.Uk)(" vueLoader")],-1),wn=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("类型: "),(0,e._)("code",null,"object")])],-1),En=(0,e._)("li",null,[(0,e._)("p",null,[(0,e.Uk)("默认值:"),(0,e._)("code",null,"{}")])],-1),An=(0,e._)("p",null,"详情:",-1),Ln=(0,e.Uk)("配置 "),Pn={href:"https://vue-loader.vuejs.org/zh/options.html",target:"_blank",rel:"noopener noreferrer"},Nn=(0,e.Uk)("Vue Loader"),Sn=(0,e._)("h2",{id:"更多配置项",tabindex:"-1"},[(0,e._)("a",{class:"header-anchor",href:"#更多配置项","aria-hidden":"true"},"#"),(0,e.Uk)(" 更多配置项")],-1),Wn=(0,e._)("p",null,"Fes.js 允许插件注册配置,如果你使用插件,肯定会在插件里找到更多配置项。",-1),zn={},On=(0,a(3744).Z)(zn,[["render",function(n,s){const a=(0,e.up)("OutboundLink");return(0,e.wg)(),(0,e.iD)(e.HY,null,[p,(0,e._)("ul",null,[(0,e._)("li",null,[l,(0,e._)("p",null,[(0,e._)("a",t,[o,(0,e.Wm)(a)]),r])])]),c,(0,e._)("ul",null,[i,u,(0,e._)("li",null,[d,(0,e._)("p",null,[k,(0,e._)("a",b,[h,(0,e.Wm)(a)]),m])])]),g,(0,e._)("ul",null,[v,y,(0,e._)("li",null,[_,(0,e._)("p",null,[f,(0,e._)("a",x,[j,(0,e.Wm)(a)]),U])])]),w,(0,e._)("ul",null,[E,A,(0,e._)("li",null,[L,(0,e._)("p",null,[P,(0,e._)("a",N,[S,(0,e.Wm)(a)]),W])])]),z,(0,e._)("ul",null,[O,D,(0,e._)("li",null,[Z,(0,e._)("p",null,[T,(0,e._)("a",Y,[M,(0,e.Wm)(a)]),B])])]),C,(0,e._)("ul",null,[I,V,(0,e._)("li",null,[q,(0,e._)("p",null,[H,(0,e._)("a",R,[F,(0,e.Wm)(a)]),G])])]),$,(0,e._)("ul",null,[J,K,(0,e._)("li",null,[Q,(0,e._)("p",null,[X,(0,e._)("a",nn,[sn,(0,e.Wm)(a)]),an])])]),en,(0,e._)("ul",null,[pn,ln,(0,e._)("li",null,[tn,(0,e._)("p",null,[on,(0,e._)("a",rn,[cn,(0,e.Wm)(a)]),un])])]),dn,(0,e._)("p",null,[kn,bn,hn,(0,e._)("a",mn,[gn,(0,e.Wm)(a)]),vn]),yn,(0,e._)("ul",null,[(0,e._)("li",null,[_n,(0,e._)("p",null,[fn,(0,e._)("a",xn,[jn,(0,e.Wm)(a)])])])]),Un,(0,e._)("ul",null,[wn,En,(0,e._)("li",null,[An,(0,e._)("p",null,[Ln,(0,e._)("a",Pn,[Nn,(0,e.Wm)(a)])])])]),Sn,Wn],64)}]])},3744:(n,s)=>{s.Z=(n,s)=>{const a=n.__vccOpts||n;for(const[n,e]of s)a[n]=e;return a}}}]);