2015-05-11 20 views
9

package.json của tôi bao gồm webpack và một số bộ tải:Làm thế nào để dung hòa webpack toàn cầu cài đặt và bộ tải địa phương

"devDependencies": { 
    "babel-core": "^5.2.17", 
    "babel-loader": "^5.0.0", 
    "jsx-loader": "^0.13.2", 
    "node-libs-browser": "^0.5.0", 
    "webpack": "^1.9.4" 
} 

Khi tôi chạy webpack nó không phải là con đường của tôi vì vậy nó không hiển thị như được tìm thấy. Tôi đã cài đặt nó trên toàn cầu npm install -g webpack nên nhị phân sẽ xuất hiện trên đường đi của tôi, nhưng sau đó nó không thể tìm thấy các module loader đã được cài đặt trong ./node_modules mà nó cần phải xử lý cây phụ thuộc của tôi:

$ webpack --progress --colors --watch 
10% 0/1 build modules/usr/local/lib/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:206 
       throw e; 
        ^
Error: Cannot find module 'jstransform/simple'``` 

các giải pháp ưa thích là gì đây?

Tôi có thể cài đặt bộ tải của tôi trên toàn cầu, nhưng tôi không thích điều đó vì cross-dự án phát

tôi có thể cố gắng chạy ra khỏi webpack node_modules (không chắc chắn làm thế nào để thật mà nói, thêm nó vào $PATH cho mỗi dự án?)

Hoặc tôi có thể cố gắng cấp quyền truy cập webpack toàn cầu vào thư mục node_modules của mình, thư mục này cũng có vẻ bị hack.

Tôi đã làm điều gì đó sai, hoặc có cách nào được cộng đồng chấp thuận tốt hơn xung quanh vấn đề này có thể là phổ biến?

Trả lời

19

Tôi có một bài đăng trên blog có tên là Managing Per-Project Interpreters and the PATH có chi tiết về phương pháp của tôi cho việc này. Tôi sẽ tóm tắt ở đây để giải quyết một số câu hỏi chính của bạn.

Giải pháp ưa thích ở đây là gì?

Không bao giờ (thực sự, nghĩa là không bao giờ) sử dụng npm -g. Chỉ cần cài đặt bình thường trong dự án của bạn. Sử dụng trình bao của bạn để đặt PATH một cách thích hợp. Tôi sử dụng zsh để làm điều này tự động như chi tiết trong bài đăng trên blog vì vậy nếu tôi cd vào một dự án với ./node_modules/.bin, nó được đưa vào PATH của tôi tự động.

Có nhiều cách khác hoạt động bao gồm tạo bí danh như alias webpack="./node_modules/.bin/webpack" v.v. Nhưng thực sự chỉ cần thay đổi PATH của bạn và bạn sẽ có trải nghiệm lâu dài hài hòa nhất. Các nhu cầu của một nhà phát triển đa dự án không được đáp ứng bởi trường cũ unix tất cả mọi thứ sống trong một trong hai/bin hoặc/usr/bin.

  • Nếu bạn sử dụng các kịch bản NPM (các "kịch bản" chủ chốt trong package.json của bạn), NPM tự động bao gồm ./node_modules/.bin trong PATH của bạn trong những kịch bản vì vậy bạn chỉ có thể chạy lệnh và họ sẽ được tìm thấy. Vì vậy, hãy sử dụng các tập lệnh npm và nếu bạn sử dụng các kịch bản lệnh shell là một nơi dễ dàng để thực hiện export PATH="$PWD/node_modules/.bin:$PATH".
4

Bất kỳ tệp nhị phân nào đi kèm với gói được xác định trong phụ thuộc của bạn phải được đặt dưới ./node_modules/.bin, vì vậy bạn sẽ có thể truy cập tại đó, nghĩa là: ./node_modules/.bin/webpack.

Ngoài ra, bạn có thể xác định tập lệnh bên trong package.json, điều này sẽ cho phép bạn chạy một cái gì đó như npm run webpack làm bí danh.

+0

Nó có đủ cờ trên đó là nó cảm thấy thoải mái khi sử dụng định nghĩa tập lệnh npm cho nó dù sao đi nữa, vì vậy tôi thích tùy chọn thứ hai đó. Tôi sẽ đợi vài phút để có câu trả lời tốt hơn nếu có một ;-) –

Các vấn đề liên quan