@nx-plus/vue
Version:
Vue plugin for Nx
90 lines • 3.19 kB
JavaScript
;
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