Tôi muốn làm một cái gì đó như thế này, vì vậy npm install
cũng sẽ cài đặt package.json
của ../somelocallib
hoặc quan trọng hơn là phụ thuộc của nó.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Tôi muốn làm một cái gì đó như thế này, vì vậy npm install
cũng sẽ cài đặt package.json
của ../somelocallib
hoặc quan trọng hơn là phụ thuộc của nó.
"dependencies": {
"express": "*",
"../somelocallib": "*"
}
Câu trả lời:
Tính năng này đã được triển khai trong phiên bản 2.0.0 của npm. Thí dụ:
{
"name": "baz",
"dependencies": {
"bar": "file:../foo/bar"
}
}
Bất kỳ đường dẫn nào sau đây cũng hợp lệ:
../foo/bar
~/foo/bar
./foo/bar
/foo/bar
Gói cục bộ sẽ được sao chép vào tiền tố ( ./node-modules
).
Đặt somelocallib
sự phụ thuộc vào bạn package.json
như bình thường:
"dependencies": {
"somelocallib": "0.0.x"
}
Sau đó chạy npm link ../somelocallib
và npm sẽ cài đặt phiên bản bạn đang làm việc dưới dạng liên kết tượng trưng .
app@0.0.1 /private/tmp/app
└── somelocallib@0.0.1 -> /private/tmp/somelocallib
Tham khảo: liên kết (1)
npm dedup
để khắc phục vấn đề này. npmjs.org/doc/cli/npm-dedupe.html
npm install <folder>
mô tả cho biết Cài đặt gói trong thư mục dưới dạng liên kết tượng trưng trong dự án hiện tại.
Bây giờ có thể chỉ định package.json
trực tiếp đường dẫn cài đặt mô-đun Node cục bộ của bạn . Từ các tài liệu:
Đường dẫn địa phương
Kể từ phiên bản 2.0.0, bạn có thể cung cấp đường dẫn đến thư mục cục bộ có chứa gói. Đường dẫn cục bộ có thể được lưu bằng cách sử dụng
npm install -S
hoặcnpm install --save
, sử dụng bất kỳ biểu mẫu nào sau đây:../foo/bar ~/foo/bar ./foo/bar /foo/bar
trong trường hợp đó, chúng sẽ được chuẩn hóa thành một đường dẫn tương đối và được thêm vào của bạn
package.json
. Ví dụ:{ "name": "baz", "dependencies": { "bar": "file:../foo/bar" } }
Tính năng này hữu ích cho phát triển ngoại tuyến cục bộ và tạo các thử nghiệm yêu cầu cài đặt npm khi bạn không muốn truy cập máy chủ bên ngoài, nhưng không nên được sử dụng khi xuất bản các gói lên sổ đăng ký công khai.
"bar": "file:///home/user/src/foo/bar"
node:onbuild
hình ảnh tiêu chuẩn chỉ sao chép thư mục hiện tại và do đó bỏ qua mọi thứ ../foo
.
npm install
từ hoặc một kho git khác trên mạng LAN không? Khi tôi thử cài đặt ở trên và npm từ git + ssh, nó dường như tìm trong thư mục node_modules và không cố gắng đi qua git + ssh mặc dù đó là cách tôi đang cài đặt gói cấp cao nhất.
Điều này làm việc cho tôi.
Đặt phần sau vào tệp pack.json của bạn
"scripts": {
"preinstall": "npm install ../my-own-module/"
}
.gitignore
trong thư mục mô-đun, được tạo .npmignore
và lần đầu tiên tôi chạy nó đã áp dụng đệ quy 777 trên tất cả các thư mục ngoại trừ node_modules
. Nhưng có, nó đã cài đặt các phụ thuộc. Sử dụng phiên bản npm 1.4.14.
"dependencies": { "my-own-module": "file:../my-own-module" }
?
npm link
là bạn không cần phải thực hiện npm install
mỗi lần để cập nhật các phụ thuộc của mình.
Nếu bạn muốn tự động hóa thêm điều này, bởi vì bạn đang kiểm tra mô-đun của mình trong kiểm soát phiên bản và không muốn dựa vào các nhà phát triển ghi nhớ liên kết npm, bạn có thể thêm phần này vào phần "script" của gói.json:
"scripts": {
"postinstall": "npm link ../somelocallib",
"postupdate": "npm link ../somelocallib"
}
Điều này cảm thấy vượt quá hacky, nhưng nó dường như "làm việc". Nhận mẹo từ vấn đề npm này: https://github.com/npm/npm/issues/1558#issuecomment-12444454
postinstall
và postupdate
thay vì preinstall
và preupdate
?
Đây là cách bạn sẽ thêm phụ thuộc cục bộ:
npm install file:src/assets/js/FILE_NAME
Thêm nó vào pack.json từ NPM:
npm install --save file:src/assets/js/FILE_NAME
Thêm trực tiếp vào pack.json như thế này:
....
"angular2-autosize": "1.0.1",
"angular2-text-mask": "8.0.2",
"animate.css": "3.5.2",
"LIBRARY_NAME": "file:src/assets/js/FILE_NAME"
....
Đây là gói.json bạn sẽ sử dụng cho dự án chính:
"dependencies": {
"express": "*",
"somelocallib": "file:./somelocallib"
}
Ở đó, ./somelocallib
là tham chiếu đến thư mục thư viện liên quan đến gói dự án chính.j.j .
Tham khảo: https://docs.npmjs.com/files/package.json#local-paths
Xử lý các phụ thuộc thư viện của bạn.
Ngoài việc chạy npm install
, bạn sẽ cần phải chạy (cd node_modules/somelocallib && npm install)
.
Đây là một lỗi đã biết với NPM.
Tham khảo: https://github.com/npm/npm/issues/1341 (tìm kiếm một tài liệu tham khảo cập nhật hơn)
Kiểm tra chủ của bạn package.lock
và của bạn somelocallib/package.lock
vào trình quản lý mã nguồn của bạn.
Sau đó, trong Dockerfile của bạn sử dụng:
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)
# ...
Tôi sử dụng dấu ngoặc đơn trong các (cd A && B)
cấu trúc của mình để làm cho hoạt động trở nên bình thường.
Tôi biết rằng npm install ../somelocallib
hoạt động.
Tuy nhiên, tôi không biết liệu cú pháp bạn hiển thị trong câu hỏi có hoạt động từ package.json
...
Thật không may, doc dường như chỉ đề cập đến URL như một sự phụ thuộc.
Hãy thử file:///.../...tar.gz
, chỉ vào một lib cục bộ được nén ... và cho chúng tôi biết nếu nó hoạt động.
Điều này làm việc cho tôi: đầu tiên, hãy đảm bảo các thư mục npm có đúng người dùng
sudo chown -R myuser ~/.npm
sudo chown -R myuser /usr/local/lib/node_modules
Sau đó, trong gói.json của bạn liên kết thư mục
"scripts": {
"preinstall": "npm ln mylib ../../path/to/mylib"
},
"dependencies": {
"mylib" : "*"
}
npm install
.
Trên thực tế, kể từ npm 2.0, hiện có hỗ trợ các đường dẫn cục bộ (xem tại đây ).
Tò mò ..... ít nhất là trên Windows (npm của tôi là 3. một cái gì đó) tôi cần phải làm:
"dependencies": {
"body-parser": "^1.17.1",
"module1": "../module1",
"module2": "../module2",
Khi tôi thực hiện, npm install ../module1 --save
nó dẫn đến các đường dẫn tuyệt đối và không tương đối theo tài liệu.
Tôi loay hoay thêm một chút nữa và xác định thế ../xxx
là đủ.
Cụ thể, tôi đã kiểm tra các mô-đun nút cục bộ để nói d: \ build \ module1, d: \ build \ module2 và dự án nút (ứng dụng) của tôi trong d: \ build \ nodeApp.
Để 'cài đặt', tôi:
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
pack.json của module1 có sự phụ thuộc của "module2": "../module2"; module2 không có phụ thuộc cục bộ; nodeApp có các phụ thuộc "module1": "../module1" và "module2": "../module2".
Không chắc chắn nếu điều này chỉ hoạt động với tôi vì cả 3 thư mục (module1, module2 và nodeApp) đều ở cùng cấp độ đó .......
Hai bước để phát triển địa phương hoàn chỉnh: