UNPKG

customize-cra

Version:

[![All Contributors](https://img.shields.io/badge/all_contributors-17-orange.svg?style=flat-square)](#contributors-)

3 lines (2 loc) 6.54 kB
import e from"lodash.flow";function s(e,s,o){return s in e?Object.defineProperty(e,s,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[s]=o,e}const o=(e,s)=>{let o;o=s?e=>e.loader&&e.loader.includes("babel")&&e.exclude:e=>e.loader&&e.loader.includes("babel")&&e.include;let r=e.module.rules.find(e=>Array.isArray(e.oneOf)).oneOf,t=r.find(o);return t||(t=(r=r.reduce((e,s)=>e.concat(s.use||[]),[])).find(o)),t},r=e=>s=>{const{message:o,dest:r}=e||{},t=[];if(o&&t.push(o),t.push(JSON.stringify(s,null,2)),r){require("fs").appendFile(r,`${t.join("\n")}\n`)}return t.forEach(e=>console.log(e)),s},t=(e={},s=!1)=>o=>{const r=require("webpack-bundle-analyzer").BundleAnalyzerPlugin;return s&&!process.argv.includes("--analyze")||o.plugins.push(new r(Object.assign({analyzerMode:"static",reportFilename:"report.html"},e))),o},n=()=>e=>{return e.module.rules.filter(e=>e.use&&e.use.some(e=>e.options&&void 0!==e.options.useEslintrc)).forEach(s=>{e.module.rules=e.module.rules.filter(e=>e!==s)}),e},l=e=>s=>(s.resolve||(s.resolve={}),s.resolve.alias||(s.resolve.alias={}),Object.assign(s.resolve.alias,e),s),i=e=>s=>(s.resolve||(s.resolve={}),Object.assign(s.resolve,e),s),u=e=>s=>(s.plugins.push(e),s),a=e=>s=>(s.plugins.forEach(s=>{"GenerateSW"===s.constructor.name&&e(s.config)}),s),c=e=>s=>{const o="prod"===("production"===process.env.NODE_ENV?"prod":"dev")?"css-extract-plugin":"style-loader";return s.module.rules.find(e=>Array.isArray(e.oneOf)).oneOf.filter(({use:e})=>e&&e[0]&&(e[0].loader||e[0]).includes(o)).forEach(s=>e(s)),s},p=e=>s=>{const o=s.module.rules.filter(e=>e.use&&e.use.some(e=>e.options&&void 0!==e.options.useEslintrc))[0];o.use[0].options.useEslintrc=!0,o.use[0].options.ignore=!0,o.use[0].options.configFile=e,delete o.use[0].options.baseConfig;const r=s.module.rules.map(e=>e.use&&e.use.some(e=>e.options&&void 0!==e.options.useEslintrc)?o:e);return s.module.rules=r,s},d=()=>e=>{const s=e.module.rules.filter(e=>e.use&&e.use.some(e=>e.options&&void 0!==e.options.useEslintrc))[0];s.test=/\.([j,t]sx?|mjs)$/;const o=e.module.rules.map(e=>e.use&&e.use.some(e=>e.options&&void 0!==e.options.useEslintrc)?s:e);return e.module.rules=o,e},f=(e={},s={})=>o=>{const r=require("mini-css-extract-plugin"),t=require("postcss-normalize"),n=e.cssLoaderOptions||{},{localIdentName:l}=e;let i=e.cssModules||{localIdentName:l};i.localIdentName||(i=s),i.localIdentName=i.localIdentName||"[local]--[hash:base64:5]";const u=/\.module\.less$/,a=process.env.NODE_ENV,c="development"===a,p="production"===a,d="false"!==process.env.GENERATE_SOURCEMAP,f="./"===o.output.publicPath,m=(s,o)=>{const n=[c&&require.resolve("style-loader"),p&&{loader:r.loader,options:f?{publicPath:"../../"}:{}},{loader:require.resolve("css-loader"),options:s},{loader:require.resolve("postcss-loader"),options:{ident:"postcss",plugins:()=>[require("postcss-flexbugs-fixes"),require("postcss-preset-env")({autoprefixer:{flexbox:"no-2009"},stage:3}),t()],sourceMap:p&&d}}].filter(Boolean);return o&&n.push({loader:require.resolve("resolve-url-loader"),options:{sourceMap:p&&d}},{loader:require.resolve(o),options:Object.assign({sourceMap:!0},e)}),n},g=o.module.rules.find(e=>Array.isArray(e.oneOf)).oneOf;return g.splice(g.length-1,0,{test:/\.less$/,exclude:u,use:m(Object.assign({importLoaders:2,sourceMap:p&&d},n),"less-loader")},{test:u,use:m(Object.assign({importLoaders:2,sourceMap:p&&d},n,{modules:i}),"less-loader")}),o},m=()=>e=>(process.argv.includes("--watch-all")&&delete e.watchOptions,e),g=()=>e=>(e.optimization.splitChunks={cacheGroups:{default:!1}},e.optimization.runtimeChunk=!1,e),b=e=>o=>{let r=o.externals;return r?Array.isArray(e)?r=e.concat(r):Array.isArray(r)||e.constructor===Function||e.constructor===RegExp?r=[e].concat(r):e instanceof Object&&r instanceof Object&&(r=function(e){for(var o=1;o<arguments.length;o++)if(o%2){var r=null!=arguments[o]?arguments[o]:{},t=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(t=t.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.forEach(function(o){s(e,o,r[o])})}else Object.defineProperties(e,Object.getOwnPropertyDescriptors(arguments[o]));return e}({},r,{},e)):r=e,o.externals=r,o},h=e=>s=>{return s.module.rules.find(e=>Array.isArray(e.oneOf)).oneOf.forEach(s=>s.use&&s.use.forEach(s=>{if(s.options&&"postcss"===s.options.ident&&(s.options.plugins||(s.options.plugins=()=>[...e]),s.options.plugins)){const o=s.options.plugins;s.options.plugins=()=>[...o(),...e]}})),s},O=()=>e=>(e.resolve.plugins=e.resolve.plugins.filter(e=>"ModuleScopePlugin"!==e.constructor.name),e),v=e=>s=>{for(let o of s.module.rules)if(o.oneOf){o.oneOf.unshift(e);break}return s},y=e=>s=>(s.module.rules.unshift({test:/\.(ts|tsx)$/,loader:"tslint-loader",options:e,enforce:"pre"}),s),E=e=>s=>(s.target=e,s),j=e=>s=>(e&&(e.startsWith("http")||e.startsWith("https")||e.startsWith("/")||(e="/"+e),e.endsWith("/")||(e+="/"),s.output.publicPath=e),s),x=e=>s=>(e&&"object"==typeof e&&(s.optimization.splitChunks=e),s),A=e=>s=>(s.stats=e,s),N=e=>s=>(o(s).options.plugins.push(e),s),P=e=>s=>{const r=o(s,!0).options;return r.plugins||(r.plugins=[]),r.plugins.push(e),s},q=e=>s=>(o(s).options.presets.push(e),s),w=()=>e=>N(["@babel/plugin-proposal-decorators",{legacy:!0}])(e),M=()=>e=>(o(e).options.babelrc=!0,e),z=e=>s=>(o(s).include=e,s),k=e=>s=>(o(s).exclude=e,s),S=(...e)=>e.map(e=>N(e)),$=(...e)=>e.map(e=>P(e)),C=(...e)=>e.map(e=>q(e)),I=(e,s)=>N(["import",Object.assign({},{libraryName:e},s),`fix-${e}-imports`]),W=e=>s=>(s.plugins=s.plugins.filter(s=>s.constructor.name!==e),s),D=(...s)=>e(...s.filter(e=>e)),F=(...e)=>s=>(o,r)=>{const t=s(o,r);return D(...e)(t)};export{N as addBabelPlugin,S as addBabelPlugins,q as addBabelPreset,C as addBabelPresets,t as addBundleVisualizer,w as addDecoratorsLegacy,P as addExternalBabelPlugin,$ as addExternalBabelPlugins,f as addLessLoader,h as addPostcssPlugins,y as addTslintLoader,l as addWebpackAlias,b as addWebpackExternals,v as addWebpackModuleRule,u as addWebpackPlugin,i as addWebpackResolve,c as adjustStyleLoaders,a as adjustWorkbox,k as babelExclude,z as babelInclude,g as disableChunk,n as disableEsLint,d as enableEslintTypescript,I as fixBabelImports,o as getBabelLoader,D as override,F as overrideDevServer,W as removeInternalBabelPlugin,O as removeModuleScopePlugin,x as setWebpackOptimizationSplitChunks,j as setWebpackPublicPath,A as setWebpackStats,E as setWebpackTarget,r as tap,M as useBabelRc,p as useEslintRc,m as watchAll}; //# sourceMappingURL=index.esm.js.map