mirror of
https://github.com/sahadev/vue-component-creater-ui.git
synced 2025-06-06 13:04:05 +08:00
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
import parsePackageName from 'parse-package-name';
|
|
|
|
export default async function(code, imports, scripts) {
|
|
const replacements = [];
|
|
|
|
for (const [index, item] of imports.entries()) {
|
|
const moduleName = `__npm_module_${index}`;
|
|
const pkg = parsePackageName(item.module);
|
|
const version = pkg.version || 'latest';
|
|
scripts.push({
|
|
path: pkg.path ? `/${pkg.path}` : '',
|
|
name: moduleName,
|
|
module:
|
|
pkg.name === 'vue' && !pkg.path
|
|
? `vue@${version}/dist/vue.esm.js`
|
|
: `${pkg.name}@${version}`
|
|
});
|
|
let replacement = '\n';
|
|
for (const variable of item.variables) {
|
|
if (variable.imported === 'default') {
|
|
replacement += `var ${
|
|
variable.local
|
|
} = ${moduleName}.default || ${moduleName};\n`;
|
|
} else {
|
|
replacement += `var ${variable.local} = ${moduleName}.${
|
|
variable.imported
|
|
};\n`;
|
|
}
|
|
}
|
|
if (replacement) {
|
|
replacements.push(replacement);
|
|
}
|
|
}
|
|
|
|
if (replacements.length > 0) {
|
|
code = replacements.join('\n') + code;
|
|
}
|
|
|
|
return code;
|
|
}
|