Node.js:如何搜索具有指定字段的模块?

时间:2017-03-18 10:28:48

标签: javascript node.js npm module require

主要:我如何要求example中包含package.json字段的模块?

例如:

const path = require( "path" );
const glob = require( "glob" );

const modules = glob.sync( './node_modules/*' );

for ( let mod in modules ) {
    const modPackage = require( path.resolve( __dirname, "node_modules", mod, "package.json" ) );
    if ( modPackage.hasOwnProperty( "example" ) ) {
        console.log( "Module:", mod, "Has Field 'example'" );
    }
}

Addiotinal :我如何要求具有特定标签的模块? (例如:“demo”)

1 个答案:

答案 0 :(得分:0)

在我看来,您的代码基本上是正确的,只有两个问题:

  1. 您想要for-of,而不是for-in
  2. 无需在路径中添加/node_modules/
  3. 所以:

    const path = require( "path" );
    const glob = require( "glob" );
    
    const modules = glob.sync( './node_modules/*' );
    
    for (let mod of modules ) {
    // ----------^^
        const modPackage = require( path.resolve( __dirname, mod, "package.json" ) );
    // ------------------------------------------------------^
        if ( modPackage.hasOwnProperty( "example" ) ) {
            console.log( "Module:", mod, "Has Field 'example'" );
        }
    }
    

    您几乎不想在数组上使用for-in。有关在this question's answers中循环遍历数组的更多信息。