API NPM NodeJS плохо документирован, но проверка кода помогает.
Here мы находим следующую строку:
install.usage = "npm install"
+ "\nnpm install <pkg>"
+ "\nnpm install <pkg>@<tag>"
+ "\nnpm install <pkg>@<version>"
+ "\nnpm install <pkg>@<version range>"
+ "\nnpm install <folder>"
+ "\nnpm install <tarball file>"
+ "\nnpm install <tarball url>"
+ "\nnpm install <git:// url>"
+ "\nnpm install <github username>/<github project>"
+ "\n\nCan specify one or more: npm install ./foo.tgz [email protected] /some/folder"
+ "\nIf no argument is supplied and ./npm-shrinkwrap.json is "
+ "\npresent, installs dependencies specified in the shrinkwrap."
+ "\nOtherwise, installs dependencies from ./package.json."
Мой вопрос о версии, так что мы можем сделать: [email protected]
установить 0.0.1
версию hello-world
.
var npm = require("npm");
npm.load({
loaded: false
}, function (err) {
// catch errors
npm.commands.install(["[email protected]"], function (er, data) {
// log the error or data
});
npm.on("log", function (message) {
// log the progress of the installation
console.log(message);
});
});
Я не проверял, но я уверен, что мы можем использовать любой формат install.usage
решений.
Я написал функцию, которая преобразует объект dependencies
в массив, который может быть передан в вызов функции install
.
dependencies:
{
"hello-world": "0.0.1"
}
Функция получает путь к файлу package.json
и возвращает массив строк.
function createNpmDependenciesArray (packageFilePath) {
var p = require(packageFilePath);
if (!p.dependencies) return [];
var deps = [];
for (var mod in p.dependencies) {
deps.push(mod + "@" + p.dependencies[mod]);
}
return deps;
}
Я только что протестировал метод модуля @ version, и он действительно работает. – tremor
Это замечательно, но как вы устанавливаете GLOBALLY, используя npm программно? –
@cSn Проверка кода, который я нашел [этот фрагмент] (https://github.com/npm/npm/blob/a362c3f1919987419ed8a37c8defa19d2e6697b0/lib/install.js#L122-L162) - однако я не знаю, как этот код должен похоже ... Может быть, вы можете задать вопрос. –