Я хочу сделать что - то подобное, так что установки npm install
также устанавливает package.json
из ../somelocallib
или что еще более важно его зависимостей.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Я хочу сделать что - то подобное, так что установки npm install
также устанавливает package.json
из ../somelocallib
или что еще более важно его зависимостей.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Ответы:
Эта функция была реализована в версии 2.0.0 npm. Пример:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Любой из следующих путей также допустим:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
Локальный пакет будет скопирован в префикс ( ./node-modules
).
Положите somelocallib
как зависимость в вашем package.json
обычном:
"dependencies": {
"somelocallib": "0.0.x"
}
Затем запустите, npm link ../somelocallib
и npm установит версию, над которой вы работаете, как символическую ссылку .
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
Ссылка: ссылка (1)
npm dedup
для решения этой проблемы. npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
description содержит описание Установить пакет в каталоге как символическую ссылку в текущем проекте.
Теперь вы можете указать локальные пути установки модулей Node package.json
прямо в вашем компьютере . Из документов:
Местные Пути
Начиная с версии 2.0.0 вы можете указать путь к локальному каталогу, в котором находится пакет. Локальные пути могут быть сохранены с помощью
npm install -S
илиnpm install --save
, используя любую из следующих форм:../foo/bar ~/foo/bar ./foo/bar /foo/bar
в этом случае они будут нормализованы по относительному пути и добавлены к вашему
package.json
. Например:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
Эта функция полезна для локальной автономной разработки и создания тестов, которые требуют установки npm, когда вы не хотите подключаться к внешнему серверу, но не должны использоваться при публикации пакетов в публичном реестре.
"bar": "file:///home/user/src/foo/bar"
node:onbuild
изображения только копируют текущий каталог и, таким образом, оставляют все внутри ../foo
.
npm install
из которой они находятся, или другой репозиторий git в локальной сети? Когда я пытаюсь выполнить вышеизложенное и установить npm из git + ssh, кажется, что он смотрит в каталог node_modules и не пытается перейти через git + ssh, хотя я так устанавливаю пакет верхнего уровня.
Это работает для меня.
Поместите следующее в ваш файл package.json
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
в папке модуля, создан, .npmignore
и при первом запуске я применил 777 рекурсивно ко всем папкам, кроме node_modules
. Но да, он установил зависимости. Использование npm версии 1.4.14.
"dependencies": { "my-own-module": "file:../my-own-module" }
?
npm link
состоит в том, что вам не нужно npm install
каждый раз делать обновления своих зависимостей.
Если вы хотите еще больше автоматизировать это, поскольку вы проверяете свой модуль на управление версиями и не хотите полагаться на разработчиков, запомнивших ссылку на npm, вы можете добавить это в свой раздел "scripts" package.json:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
Это чувствует себя за пределами хакерской, но, похоже, «работает». Получил совет от этой проблемы npm: https://github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
а postupdate
вместо preinstall
а preupdate
?
Вот как вы будете добавлять локальные зависимости:
npm install file:src/assets/js/FILE_NAME
Добавьте его в package.json из NPM:
npm install --save file:src/assets/js/FILE_NAME
Непосредственно добавьте в package.json вот так:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
Вот пакет.json, который вы будете использовать для мастер-проекта:
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
Там ./somelocallib
есть ссылка на папку библиотеки относительно главного проекта package.json .
Ссылка: https://docs.npmjs.com/files/package.json#local-paths
Обработайте ваши библиотечные зависимости.
Помимо бега npm install
вам нужно будет бегать (cd node_modules/somelocallib && npm install)
.
Это известная ошибка в NPM.
Ссылка: https://github.com/npm/npm/issues/1341 (требуется более актуальная ссылка)
Проверьте ваш мастер package.lock
и ваш somelocallib/package.lock
в ваш менеджер исходного кода.
Тогда в вашем Dockerfile используйте:
FROM node:10
WORKDIR /app
# ...
COPY ./package.json ./package-lock.json ./
COPY somelocallib somelocallib
RUN npm ci
RUN (cd node_modules/zkp-utils/ && npm ci)
# ...
Я использую скобки в своих (cd A && B)
конструкциях, чтобы сделать операцию идемпотентной.
Я знаю, что это npm install ../somelocallib
работает.
Тем не менее, я не знаю, будет ли работать синтаксис, который вы показываете в вопросе package.json
...
К сожалению, doc, кажется, упоминает только URL как зависимость.
Попробуйте file:///.../...tar.gz
, указав на zip локальную библиотеку ... и скажите нам, работает ли она.
Это сработало для меня: во-первых, убедитесь, что каталоги npm имеют правильного пользователя
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
Тогда ваш в вашем package.json ссылку на каталог
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
.
На самом деле, начиная с npm 2.0, теперь есть поддержка локальных путей (см. Здесь ).
Любопытно ..... по крайней мере на Windows (мой npm - 3. что-то) мне нужно было сделать:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
Когда я сделал это, npm install ../module1 --save
это привело к абсолютным путям, а не относительным согласно документации.
Я немного повозился и решил, что этого ../xxx
достаточно.
В частности, я извлек модули локального узла, чтобы сказать d: \ build \ module1, d: \ build \ module2, и мой проект узла (приложение) в d: \ build \ nodeApp.
Чтобы «установить», я:
d:\build\module1> rmdir "./node_modules" /q /s && npm install
d:\build\module2> rmdir "./node_modules" /q /s && npm install
d:\build\nodeApp> rmdir "./node_modules" /q /s && npm install
В package.json для module1 есть зависимость "module2": "../module2"; модуль2 не имеет локальной зависимости; nodeApp имеет зависимости "module1": "../module1" и "module2": "../module2".
Не уверен, что это работает только для меня, так как все 3 папки (module1, module2 и nodeApp) находятся на одном уровне .......
Два шага для полного локального развития: