Подтвердить что ты не робот

Замерзание для Node и npm

Это идиоматично в Python:

pip freeze > requirements.txt
pip install -r requirements.txt

Первая команда сохраняет список требований к файлу. Затем вы можете использовать команду для установки требований в свою среду.

Node имеет npm install, но я не понимаю, как я должен сбрасывать состояние моих зависимостей в package.json. я Googled и нашел this:

npm ls | grep -E "^(├|└)─" | cut -d" " -f2 | awk '{FS = "@"; print "\""$1"\"", ":", "\""$2"\""}'

но, как предполагает автор этого конвейера, должен быть лучший способ? Что мне здесь не хватает?

Я просто хочу сбросить свои текущие отпечатки в package.json. Поскольку https://npmjs.org/doc/shrinkwrap.html говорит,

Файл "package.json" по-прежнему требуется, если вы хотите использовать "npm install".

Я просмотрел информацию на shrinkwrap, но я не вижу, как просто выполнить эту задачу с помощью shrinkwrap.

4b9b3361

Ответ 1

Это, вероятно, сработает для вас. npm shrinkwrap

npm shrinkwrap

Ответ 2

Вы можете создать package.json из текущего установленного пакета, используя npm init. Затем вы можете легко переместить package.json и просто сделать npm install для установки пакетов там, где вы хотите.

Ответ 3

Это ближайший я получил

npm freezelol

npm ls | grep -E "^(├|└)─" | cut -d" " -f2 | awk -v quote='"' 'BEGIN { FS = "@" } ; { print quote $1 quote,":",quote $2 quote"," }' | sed -e 's/ :/:/g'

Вывод похож на

  "bower": "1.3.12",
  "chai": "2.1.2",
  "cucumber": "0.4.8",

По-прежнему нужно обрезать последнюю конечную запятую, но она довольно близка!

Ответ 4

Вот альтернативная более короткая версия команды, которая анализирует npm ls:

npm ls | grep -o "\S\[email protected]\S\+$" | tr @ ' ' | awk -v q='"' '{print q$1q": "q"^"$2q","}'

И вот псевдоним, который стоит добавить в ваш файл оболочки rc:

alias npm-freeze='npm ls | grep -o "\S\[email protected]\S\+$" | tr @ " " | awk -v q='\''"'\'' '\''{print q$1q": "q"^"$2q","}'\'''

и запустите его как:

npm-freeze

Вывод выглядит так:

"backbone": "^1.3.2",
"underscore": "^1.8.3",
"bootstrap": "^3.3.6",
"bootstrap-sass": "^3.3.6",
"grunt": "^0.4.5",

Чтобы фильтровать, просто подключите его к grep, например.

$ npm-freeze | grep grunt
"grunt": "^0.4.5",
"grunt-cli": "^0.1.13",
"grunt-contrib-watch": "^0.6.1",
"grunt-sass": "^1.1.0",
"load-grunt-tasks": "^3.4.1",

Вот пример сохранения вывода в package.json и запуск npm install:

printf "{\n"\""name"\"": "\""npm-freeze"\"",\n"\""dependencies"\"": {\n$(npm-freeze | grep grunt | head -c -2)\n}\n}" | tee package.json && npm install