UNPKG

zoro-cli

Version:

https://github.com/vuejs/vue-cli

74 lines (68 loc) 2.29 kB
const { resolveCwd } = require('zoro-cli-util/resolve') module.exports = ({ api, options, envUtil }) => { const isProd = envUtil.isProduction() const useThreads = isProd && options.parallel api.chainWebpack(webpackConfig => { const versions = {} /* eslint-disable import/no-unresolved */ if (resolveCwd('babel-preset-zoro-vue')) { versions[ 'babel-preset-zoro-vue' ] = require('babel-preset-zoro-vue/package.json').version } else if (resolveCwd('babel-preset-zoro-react')) { versions[ 'babel-preset-zoro-react' ] = require('babel-preset-zoro-react/package.json').version } /* eslint-enable import/no-unresolved */ const jsRule = webpackConfig.module .rule('js') .test(/\.(j|t)sx?$/) .exclude.add(filepath => { // always transpile js in vue files // but do not transpile those in node_modules, because they maybe compiled already // if you need to compile vue in node_modules, please use transpileDependencies if ( /\.vue\.(j|t)sx?$/.test(filepath) && !/node_modules/.test(filepath) ) { return false } // FIXME: // exclude dynamic entries from cli-service // if (filepath.startsWith(cliServicePath)) { // return true // } // check if this is something the user explicitly wants to transpile if (options.transpileDependencies.some(dep => filepath.match(dep))) { return false } // Don't transpile node_modules return /node_modules/.test(filepath) }) .end() .use('cache-loader') .loader('cache-loader') .options( api.genCacheConfig( 'babel-loader', { '@babel/core': require('@babel/core/package.json').version, 'babel-loader': require('babel-loader/package.json').version, ...versions, }, [ 'src/.babelrc.js', 'src/babel.config.js', '.babelrc.js', 'babel.config.js', ], ), ) .end() if (useThreads) { jsRule.use('thread-loader').loader('thread-loader') } jsRule.use('babel-loader').loader('babel-loader') }) }