tránh ../../../../../../ ..
Không phải tất cả mọi thứ trong một ứng dụng đều thuộc về npm công cộng và chi phí thiết lập một npm hoặc git repo riêng vẫn còn khá lớn trong nhiều trường hợp. Dưới đây là một số cách tiếp cận để tránh
../../../../../../../
vấn đề đường dẫn tương đối.
nút_modules
Mọi người đôi khi phản đối việc đặt các mô-đun dành riêng cho ứng dụng vào node_modules vì không rõ ràng làm thế nào để kiểm tra các mô-đun bên trong của bạn mà không kiểm tra các mô-đun của bên thứ ba từ npm.
Câu trả lời khá đơn giản! Nếu bạn có một .gitignore
tập tin bỏ qua node_modules
:
node_modules
Bạn chỉ có thể thêm một ngoại lệ !
cho mỗi mô-đun ứng dụng nội bộ của mình:
node_modules/*
!node_modules/foo
!node_modules/bar
Xin lưu ý rằng bạn không thể unignore một thư mục con, nếu phụ huynh đã được bỏ qua. Vì vậy, thay vì bỏ qua node_modules
, bạn phải bỏ qua mọi thư mục bên trong node_modules
với
node_modules/*
thủ thuật, và sau đó bạn có thể thêm ngoại lệ của mình.
Bây giờ bất cứ nơi nào trong ứng dụng của bạn, bạn sẽ có thể require('foo')
hoặc require('bar')
không có một đường dẫn tương đối rất lớn và dễ vỡ.
Nếu bạn có nhiều mô-đun và muốn tách chúng ra khỏi các mô-đun của bên thứ ba được cài đặt bởi npm, bạn chỉ có thể đặt tất cả chúng trong một thư mục node_modules
như node_modules/app
:
node_modules/app/foo
node_modules/app/bar
Bây giờ bạn sẽ có thể require('app/foo')
hoặc require('app/bar')
từ bất cứ nơi nào trong ứng dụng của bạn.
Trong của bạn .gitignore
, chỉ cần thêm một ngoại lệ cho node_modules/app
:
node_modules/*
!node_modules/app
Nếu ứng dụng của bạn đã biến đổi cấu hình trong package.json, bạn sẽ cần phải tạo ra một package.json riêng biệt với riêng của mình chuyển trường trong của bạn node_modules/foo
hoặc node_modules/app/foo
thư mục phần vì biến đổi không áp dụng qua các biên giới mô-đun. Điều này sẽ làm cho các mô-đun của bạn mạnh mẽ hơn trước các thay đổi cấu hình trong ứng dụng của bạn và việc sử dụng lại các gói bên ngoài ứng dụng của bạn sẽ dễ dàng hơn.
liên kết tượng trưng
Một mẹo hữu ích khác nếu bạn đang làm việc trên một ứng dụng mà bạn có thể tạo liên kết tượng trưng và không cần hỗ trợ các cửa sổ là liên kết một lib/
hoặc app/
thư mục vào node_modules
. Từ gốc dự án, làm:
ln -s ../lib node_modules/app
và bây giờ từ bất cứ nơi nào trong dự án của bạn, bạn sẽ có thể yêu cầu các tệp lib/
bằng cách thực hiện require('app/foo.js')
để có được lib/foo.js
.
đường dẫn tùy chỉnh
Bạn có thể thấy một số nơi nói về việc sử dụng $NODE_PATH
biến môi trường hoặc opts.paths
để thêm các thư mục cho nút và trình duyệt để tìm trong các mô-đun.
Không giống như hầu hết các nền tảng khác, sử dụng một mảng các thư mục đường dẫn kiểu shell với $NODE_PATH
nút không thuận lợi so với việc sử dụng hiệu quả node_modules
thư mục.
Điều này là do ứng dụng của bạn được kết hợp chặt chẽ hơn với cấu hình môi trường thời gian chạy nên có nhiều phần chuyển động hơn và ứng dụng của bạn sẽ chỉ hoạt động khi môi trường của bạn được thiết lập chính xác.
nút và trình duyệt cả hai hỗ trợ nhưng không khuyến khích sử dụng
$NODE_PATH
.