Câu trả lời:
Trong thư mục mô-đun cục bộ:
$ cd ./package-dir
$ npm link
Trong thư mục của dự án để sử dụng mô-đun:
$ cd ./project-dir
$ npm link package-name
Hoặc trong một lần sử dụng các đường dẫn tương đối:
$ cd ./project-dir
$ npm link ../package-dir
Điều này tương đương với việc sử dụng hai lệnh trên dưới mui xe.
npm link
sẽ tạo ra một ví dụ thứ hai của các phụ thuộc bên ngoài. Vì vậy, nếu bạn có gói A cần B và C, B cần C. liên kết B sẽ khiến ứng dụng A có hai phiên bản C.
bạn chỉ cần cung cấp một <folder>
đối số cho npm install
, đối số sẽ trỏ đến thư mục cục bộ thay vì tên gói:
npm install /path
rm -rf node_modules
khi trước và npm install
sau khi bạn chạy tập lệnh của câu trả lời.
Vì được hỏi và trả lời bởi cùng một người, tôi sẽ thêm một liên kết npm thay thế.
từ tài liệu:
Điều này rất thuận tiện cho việc cài đặt công cụ của riêng bạn, để bạn có thể làm việc với nó và kiểm tra nó lặp đi lặp lại mà không phải liên tục xây dựng lại.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[Chỉnh sửa] Kể từ NPM 2.0, bạn có thể khai báo các phụ thuộc cục bộ trong pack.json
"dependencies": {
"bar": "file:../foo/bar"
}
npm link
lại thư mục một lần (để tạo liên kết tượng trưng toàn cầu) và sau đó chạy npm link package-name
trong thư mục của dự án (để sử dụng liên kết tượng trưng chung trong dự án của bạn). Câu trả lời dưới đây là câu trả lời đúng.
file:
phương pháp tiếp cận) được phép cho ứng dụng của tôi và mô đun cục bộ để chia sẻ một phụ thuộc. Thử nghiệm của tôi về npm link
kết quả là một phụ thuộc trùng lặp, phá vỡ mọi thứ nếu phụ thuộc cần phải được sử dụng như một đơn vị.
npm pack
+ package.json
Đây là những gì làm việc cho tôi:
module project
, thực hiệnnpm pack
:Điều này sẽ xây dựng một <package-name>-<version>.tar.gz
tập tin.
consumer project
Lý tưởng nhất là bạn có thể đặt tất cả các tệp như vậy vào một tmp
thư mục trong thư mục consumer-project
gốc của bạn :
package.json
:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Install
các gói:npm install
hoặc npm i
hoặcyarn
consumer-project's node_modules
thư mục .Chúc may mắn...
Cả hai cách tiếp cận này ( npm link
hoặcpackage.json
phụ thuộc tệp) đều hoạt động nếu mô đun cục bộ có các phụ thuộc ngang hàng mà bạn chỉ muốn cài đặt trong phạm vi dự án của bạn.
Ví dụ:
/local/mymodule/package.json:
"name": "mymodule",
"peerDependencies":
{
"foo": "^2.5"
}
/dev/myproject/package.json:
"dependencies":
{
"mymodule": "file:/local/mymodule",
"foo": "^2.5"
}
Trong kịch bản này, bộ NPM lên myproject
là node_modules/
như thế này:
/dev/myproject/node_modules/
foo/
mymodule -> /local/mymodule
Khi nút tải mymodule
và nó thực hiện require('foo')
, nút sẽ giải quyết mymodule
liên kết tượng trưng, và sau đó chỉ nhìn vào /local/mymodule/node_modules/
(và tổ tiên của nó) foo
mà nó không tìm thấy. Thay vào đó, chúng tôi muốn nút nhìn vào /local/myproject/node_modules/
, vì đó là nơi đang chạy dự án của chúng tôi và nơifoo
được cài đặt.
Vì vậy, chúng ta có cần một cách để nói với nút để không giải quyết liên kết tượng trưng này khi tìm kiếm foo
, hoặc chúng ta cần một cách để nói NPM để cài đặt một bản sao của mymodule
khi cú pháp tập tin phụ thuộc được sử dụng trong package.json
. Thật không may, tôi cũng không tìm được cách nào để làm
NODE_PATH
để trỏ đến node_modules/
nơi foo
được cài đặt. Vì vậy, đối với trường hợp trên, nó sẽ là thế này: NODE_PATH=/dev/myproject/node_modules/
Điều đó cho phép mymodule
tìm thấy foo
.
Như những người trước đã trả lời npm --save ../location-of-your-packages-root-directory
. Các ../location-of-your-packages-root-directory
tuy nhiên phải có hai điều để cho nó để làm việc.
1) package.json
trong thư mục đó chỉ về phía
2) main
thuộc tính package.json
phải được đặt và làm việc ig "main": "src/index.js",
nếu tệp mục nhập cho ../location-of-your-packages-root-directory
là../location-of-your-packages-root-directory/src/index.js