vant/build/bin/build-style-entry.js
neverland 5a1c20d0a6 [bugfix] popup style missing when build style entry (#231)
* [bugfix] Checkbox border render error in weixin browser

* [bugfix] TreeSelect dependency path error

* [bugfix] Swipe should clear autoplay timer when destroyed

* [bugfix] Optimize component dependency analyze when build style entry

* merge

* update yarn.lock

* update README.md

* update README.md

* update README.md

* update README.md

* update README.md

* [Doc] add more badges in README.md

* update README.md

* [bugfix] Address & Contact list style

* fix: contact test cases

* [bugfix] popup style missing when build style entry
2017-10-22 21:06:39 -05:00

40 lines
1.3 KiB
JavaScript

/**
* Build style entry of all components
*/
const fs = require('fs-extra');
const path = require('path');
const components = require('./get-components')();
const dependencyTree = require('dependency-tree');
components.forEach(componentName => {
const libDir = path.resolve(__dirname, '../../lib');
const content = analyzeDependencies(componentName, libDir).map(component => `require('../../vant-css/${component}.css');`);
fs.outputFileSync(path.join(libDir, componentName, './style/index.js'), content.join('\n'));
});
// Analyze component dependencies
function analyzeDependencies(componentName, libDir) {
const checkList = ['base'];
search(dependencyTree({
directory: libDir,
filename: path.resolve(libDir, componentName, 'index.js'),
filter: path => path.indexOf('vant/lib/') !== -1
}), checkList);
return checkList.filter(component => checkComponentHasStyle(component));
}
function search(tree, checkList) {
tree && Object.keys(tree).forEach(key => {
search(tree[key], checkList);
const component = key.split('/vant/lib/')[1].replace('/index.js', '').replace('mixins/', '');
if (checkList.indexOf(component) === -1) {
checkList.push(component);
}
});
}
function checkComponentHasStyle(componentName) {
return fs.existsSync(path.join(__dirname, '../../lib/vant-css/', `${componentName}.css`));
}