2016-03-11 29 views
15

Tôi đang học React và cài đặt webpack qua npm vào thư mục dự án của tôi nhưng zsh không tìm thấy lệnh mặc dù tôi có thể thấy webpack được cài đặt trong dự án của tôi. Tôi đã sử dụng npm init --yes theo sau là npm install --save webpackZsh: không tìm thấy lệnh: webpack

Trả lời

16

Cài đặt nó trên toàn cầu.

npm i -g webpack 

Nếu bạn sẽ làm việc với webpack, cài đặt webpack-dev-server quá

npm i -g webpack-dev-server 

Tôi khuyên bạn nên đầu tiên bạn tìm hiểu một chút về NPM và sau đó webpack. Bạn sẽ đấu tranh rất nhiều. Và sau đó tôi khuyên bạn không nên sử dụng webpack. Tôi thấy nó dư thừa như bower. Tôi đang gắn gulp và npm. Trên thực tế NPM làm tất cả nhưng hơi khó hình dung. Gulp làm cho nó dễ dàng hơn nhiều.

+6

Theo tài liệu: đây không phải là phương pháp được khuyến nghị. https://webpack.js.org/get-started/install-webpack/ –

+0

@HelmutGranda Thing có thể được thay đổi kể từ đó. – atilkan

1

Trong trường hợp của tôi, tôi gặp sự cố này với webpack, grunt và gulp và dường như vấn đề của tôi là vấn đề với quyền.

Tôi đã cài đặt webpack và grunt trên toàn cầu. Tuy nhiên, ngay cả khi đó, $ webapack hoặc $ grunt dẫn đến lệnh không được tìm thấy

Vấn đề là npm đã cài đặt gói toàn cầu vào/usr/local/lib/node_modules yêu cầu quyền root.

Vì vậy, để tránh phải sử dụng quyền root, tôi đã thay đổi thư mục trong đó các gói chung sẽ được cài đặt vào thư mục trong $ HOME. Để làm điều này, tôi theo hướng dẫn này:

Install npm packages globally without sudo on macOS and Linux

Sau này, tôi cài đặt webpack và grunt toàn cầu một lần nữa (lần này mà không sudo) và xác nhận rằng họ đã được cài đặt trong thư mục mới của tôi.

Bây giờ, tôi có thể chạy mà không gặp vấn đề gì!

$ webpack

$ grunt

7

Cài đặt module nút trên toàn cầu là một giải pháp nhanh chóng, nhưng tôi khuyên bạn nên thêm ./node_modules/.bin vào biến đường dẫn và thử để hiểu, vấn đề là gì.

Execute

~ export PATH="./node_modules/.bin:$PATH" 

Sau đó bạn chỉ có thể sử dụng tất cả các gói cài đặt cục bộ trong dự án của bạn. Cũng có thể thực hiện các lệnh như mocha hoặc eslint mà không cần cài đặt các gói này trên toàn cầu. Có một số giải thích tốt ngoài đó cũng có thể đọc số answer này.

+0

Đừng làm điều đó ... Đặt đường dẫn tương đối trong biến $ PATH của bạn là một lỗ hổng bảo mật. Xem http://stackoverflow.com/a/9683472/1521572 – WrksOnMyMachine

8

đã webpack cài đặt cục bộ, bạn cũng có thể sử dụng:

$(npm bin)/webpack 

thay vì:

./node_modules/.bin/webpack 
4

Không cần phải cài đặt webpack trên toàn cầu.

Hãy thử cách của tôi:

Đầu tiên, trong tập tin package.json của bạn, thêm này:

"scripts": { 
    "start": "webpack" 
}, 

Sau đó, trong thiết bị đầu cuối của bạn, hãy chạy

$npm start 

Một cách nhanh chóng: Chỉ cần chạy (Có, nó là 'npx')

$npx webpack 

Đó là tất cả.