Я хочу зробити що - щось подібне, так що установки 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>
описує: Встановити пакунок у каталог у вигляді символьної посилання в поточному проекті.
Тепер можна безпосередньо вказати шляхи установки локального модуля 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-посилання, ви можете додати це до розділу "сценарії" свого пакета.json:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
Це відчувається поза хакі, але, здається, "працює". Отримайте підказку з цього випуску npm: https://github.com/npm/npm/isissue/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"
....
Ось package.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/isissue/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
, вказуючи на локальну блискавку ... і скажіть, чи працює вона.
Це працювало для мене: спочатку переконайтесь, що npm-каталоги мають потрібного користувача
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
Тоді ваш у пакунку.json посилається на каталог
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
.
Насправді, станом на npm 2.0, існує підтримка локальних шляхів (див. Тут ).
Цікаво ..... принаймні, у Windows (мій нмм - 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
module1's package.json має залежність "module2": "../module2"; module2 не має локальної залежності; nodeApp має залежності "module1": "../module1" та "module2": "../module2".
Не впевнений, чи працює це лише для мене, оскільки всі 3 папки (module1, module2 та nodeApp) знаходяться на одному рівні .......
Два кроки для повноцінного місцевого розвитку: