bit-bin
Version:
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b
62 lines (50 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
function _default(src, options = {}) {
// eslint-disable-next-line import/no-dynamic-require, global-require
const compiler = require('vue-template-compiler');
const finalDependencies = {};
const addDependencies = (dependencies, isScript) => {
let objDependencies = {};
if (Array.isArray(dependencies)) {
dependencies.forEach(dependency => {
objDependencies[dependency] = {};
});
} else {
objDependencies = dependencies;
}
Object.keys(objDependencies).forEach(dependency => {
finalDependencies[dependency] = objDependencies[dependency];
finalDependencies[dependency].isScript = isScript;
});
};
const {
script,
styles
} = compiler.parseComponent(src, {
pad: 'line'
}); // it must be required here, otherwise, it'll be a cyclic dependency
// eslint-disable-next-line import/no-dynamic-require, global-require
const precinct = require('../../precinct').default;
if (script) {
if (script.lang) {
options.type = script.lang;
} else {
options.useContent = true;
}
const dependencies = precinct(script.content, options);
addDependencies(dependencies, true);
}
if (styles) {
styles.forEach(style => {
const dependencies = precinct(style.content, {
type: style.lang || 'scss'
});
addDependencies(dependencies, false);
});
}
return finalDependencies;
}