Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### ./find module-name
- Placed on the root of all git repositories, and made executable via `chmod +x find`, this utils displays folders with a `package.json` that depends on it.
- ```js
- #!/usr/bin/env node
- // ./find module-name
- // simple utility to find folders depending on module-name
- // by Andrea Giammarchi - @webreflection
- let [_, find, search] = process.argv;
- const fs = require('fs');
- const path = require('path');
- const cwd = process.cwd();
- const dir = path.dirname(path.resolve(find));
- if (cwd !== dir) {
- if (!search) {
- search = path.basename(cwd);
- }
- process.chdir(dir);
- }
- if (!search)
- console.log(' ./find module-name');
- else
- fs.readdir('.', (err, dirs) => {
- console.log('');
- const promises = [];
- const noPackage = [];
- dirs.forEach(dir => {
- promises.push(new Promise($ => {
- fs.stat(dir, (err, stats) => {
- if (!err && stats.isDirectory()) {
- try {
- const package = require(`./${dir}/package.json`);
- const deps = [];
- if (search in (package.dependencies || {}))
- deps.push('dependency');
- if (search in (package.devDependencies || {}))
- deps.push('devDependency');
- if (deps.length)
- console.info(` \x1B[1m${dir}\x1B[0m as ${deps.join(', ')}`);
- } catch(o_O) {
- noPackage.push(dir);
- }
- }
- $();
- });
- }));
- });
- Promise.all(promises).then(() => {
- console.log('');
- console.info(` \x1B[2mSearched for \x1B[0m${search}\x1B[2m in \x1B[0m${dir}`);
- if (noPackage.length) {
- console.warn(` \x1B[2mNo package.json in ${noPackage.join(', ')}\x1B[0m`);
- }
- console.log('');
- });
- });
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement