Node.js 如何使用NPM在本地检查包,只检查当前的vs。Don';t尝试获取最新版本

Node.js 如何使用NPM在本地检查包,只检查当前的vs。Don';t尝试获取最新版本,node.js,npm,githooks,Node.js,Npm,Githooks,我使用的是'npmouded'命令,唯一的问题是它有点慢,因为它实际上也计算出了最新版本的npm包 理想情况下,我只想知道本地是否缺少包,如果缺少包,则运行npm安装 我创建了这个脚本作为签出后githook,有没有更好的方法来检查package.json中是否缺少包 #!/usr/bin/env node var exec = require('child_process').exec, missingPackage = false; return new Promise((res

我使用的是'npmouded'命令,唯一的问题是它有点慢,因为它实际上也计算出了最新版本的npm包

理想情况下,我只想知道本地是否缺少包,如果缺少包,则运行npm安装

我创建了这个脚本作为签出后githook,有没有更好的方法来检查package.json中是否缺少包

#!/usr/bin/env node

var exec = require('child_process').exec,
    missingPackage = false;

return new Promise((resolve) => {
        exec('npm outdated --json', (error, stdout, stderr) => {
            resolve(JSON.parse(stdout));
        })
    })
    .then((packageJson) => {
        for (const x of Object.keys(packageJson)) {
            if (packageJson[x].location === '' ) {
                missingPackage = true;
            }
        }
    })
    .then(() => {
        if (missingPackage) {
            console.log('\nHello, you are missing some packages so we are going to install them....');
            exec('npm install', (error, stdout, stderr) => {
                console.log(stdout);
            })
        }
    })

我在NPM文档中没有看到任何东西,所以我只是创建了这个。不到一秒钟的时间检查您是否丢失了包

#!/usr/bin/env node

const exec = require('child_process').exec,
    fs = require('fs'),
    packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8')),
    dependenciesPackages = Object.keys(packageJson.dependencies),
    devDependenciesPackages = Object.keys(packageJson.devDependencies),
    allNpmPackages = dependenciesPackages.concat(devDependenciesPackages);

// Checking if any packages are missing
return new Promise((resolve) => {
    for (const [idx, npmPackage] of allNpmPackages.entries()) {
        fs.readFile(`node_modules/${npmPackage}/package.json`, 'utf8', function(err) {
            if (err && err.code === 'ENOENT') {
                resolve(true);
            } else if (idx === allNpmPackages.length - 1) {
                resolve(false);
            }
        });
    }
})
// If packages are missing then run npm install
.then((isMissingPackages) => {
    if (isMissingPackages) {
        console.log('\nHello, you are missing some packages so we are going to install them....'); // eslint-disable-line no-console
        exec('npm install', (error, stdout) => {
            console.log(stdout); // eslint-disable-line no-console
        });
    }
});