UNPKG

@nx-plus/vue

Version:
90 lines 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.modifyBabelLoader = exports.modifyCopyAssets = exports.modifyTypescriptAliases = exports.modifyTsConfigPaths = exports.modifyEntryPoint = exports.modifyIndexHtmlPath = void 0; const path = require("path"); const semver = require("semver"); const utils_1 = require("./utils"); function modifyIndexHtmlPath(config, options, context) { config.plugin('html').tap((args) => { args[0].template = path.join(context.root, options.index); return args; }); } exports.modifyIndexHtmlPath = modifyIndexHtmlPath; function modifyEntryPoint(config, options, context) { config.entry('app').clear(); config.entry('app').add(path.join(context.root, options.main)); } exports.modifyEntryPoint = modifyEntryPoint; function modifyTsConfigPaths(config, options, context) { const tsConfigPath = path.join(context.root, options.tsConfig); const vue = (0, utils_1.loadModule)('vue', context.root); const isVue3orVue2_7 = semver.satisfies(vue.version, '>=2.7.0'); config.module .rule('ts') .use('ts-loader') .tap((loaderOptions) => { loaderOptions.configFile = tsConfigPath; return loaderOptions; }); config.module .rule('tsx') .use('ts-loader') .tap((loaderOptions) => { loaderOptions.configFile = tsConfigPath; return loaderOptions; }); config.plugin('fork-ts-checker').tap((args) => { if (isVue3orVue2_7) { args[0].typescript.configFile = tsConfigPath; } else { args[0].tsconfig = tsConfigPath; } return args; }); } exports.modifyTsConfigPaths = modifyTsConfigPaths; function modifyTypescriptAliases(config, options, context) { const tsConfigPath = path.join(context.root, options.tsConfig); const extensions = [ '.tsx', '.ts', '.mjs', '.js', '.jsx', '.vue', '.json', '.wasm', ]; config.resolve.alias.delete('@'); config.resolve .plugin('tsconfig-paths') // eslint-disable-next-line @typescript-eslint/no-var-requires .use(require('tsconfig-paths-webpack-plugin'), [ { configFile: tsConfigPath, extensions, }, ]); } exports.modifyTypescriptAliases = modifyTypescriptAliases; function modifyCopyAssets(config, options, context, projectRoot) { const patterns = ['package.json', 'README.md'].map((file) => ({ from: path.join(projectRoot, file), to: path.join(context.root, options.dest), })); config .plugin('copy') // eslint-disable-next-line @typescript-eslint/no-var-requires .use(require('copy-webpack-plugin'), [{ patterns }]); } exports.modifyCopyAssets = modifyCopyAssets; function modifyBabelLoader(config, babelConfig) { ['js', 'ts', 'tsx'].forEach((ext) => config.module .rule(ext) .use('babel-loader') .tap((options) => (Object.assign(Object.assign({}, options), { configFile: babelConfig })))); } exports.modifyBabelLoader = modifyBabelLoader; //# sourceMappingURL=webpack.js.map