`npm build` không chạy tập lệnh có tên là bản dựng xây dựng trong gói.json


138

Đối với một mô-đun mới, tôi đang cố gắng để sử dụng npm buildmà không cần ngụm / Grunt / công cụ xây dựng chuyên ngành khác.

"scripts": {
  "build": "node build.js"
},

Build.js của tôi chỉ đơn giản là

console.log('Hello')

Tuy nhiên, đang chạy

npm build

Chỉ cần thoát ra mà không in bất cứ thứ gì, với trạng thái 0.

Đang chạy:

npm install

Cũng làm tất cả những điều bình thường, nhưng cũng không chạy build.js.

Làm thế nào tôi có thể làm cho npm chạy tập lệnh xây dựng của tôi?

Chỉnh sửa: ngay cả các lệnh bash đơn giản dường như không hoạt động, ví dụ:

"scripts": {
    "build": "touch TESTFILE"
},

Không tạo một tập tin với tên đó.


Cách giải quyết: sử dụng installthay thế.
Zaz

Đây về cơ bản là một sự phiền toái lớn và không trực quan của NPM và là một trong những lý do tôi tiếp tục sử dụng Sợi. Với sợi, tôi có thể chạy bất kỳ tập lệnh tùy chỉnh nào giống như một tham số, tức là truyện truyện sợi sẽ chạy tập lệnh truyện. Trong NPM tôi phải thực hiện npm run truyện và trên hết, nếu tôi muốn chuyển bất kỳ tham số nào qua npm, thì nó yêu cầu - trước đó, vì vậy khi so sánh sách truyện sợi --ci với npm chạy truyện - --ci, nó là không có trí tuệ đối với tôi.
Emobe

Câu trả lời:


243

Thật không may, npm buildđã là một lệnh nội bộ , như được mô tả trong các tài liệu :

Đây là lệnh hệ thống ống nước được gọi bởi npm link và npm install. Nó thường không nên được gọi trực tiếp.

Bởi vì lệnh đó đã tồn tại, nó luôn phủ bóng lên bạn "build": "node build.js".

Cách đủ điều kiện để chạy tập lệnh của riêng bạn là với run-scripthoặc bí danh của nórun :

$ npm run build

npm startvà các cách khác là cách ngắn hạn, nhưng chỉ là một tùy chọn khi lệnh npm hiện tại không làm mờ nó, giống như npm buildvậy.


Đối với hậu thế (như những người khác đã đề cập) npm buildđược npm sử dụng để xây dựng các addon C / C ++ gốc bằng cách sử dụng nút-gyp . Nó không được ghi chép tốt bởi vì thông thường nó sẽ tự động xảy ra, nhưng nếu bạn quan tâm thì mã nguồn ở đây .


15
Vì vậy, những gì không npm build làm? Theo như tôi có thể thấy nó để lại tất cả các tệp hoàn toàn không thay đổi ...
qntm

2
Một số gói yêu cầu một quá trình xây dựng. Khi bạn đang chạy npm installvà npm tìm thấy một gói có các ràng buộc C / C ++ hoặc nói chung là sth cần nút-gyp để chạy thì nó bắt đầu npm build. Bạn có thể xây dựng lại các gói đó bằng cách chạy npm buildmột mình.
Jakub Miziołek

4
lệnh nội bộ nên được đổi tên thành _buildnpm buildnên là một phím tắt như npm startnpm test
Pawel

1
Tôi hiểu rằng npm buildsẽ không gọi tập lệnh của tôi và nó được sử dụng để xây dựng các thành phần được biên dịch của gói. Tôi vẫn không chắc chắn làm thế nào để thực hiện điều đó: nó tìm kiếm những tập tin nào, v.v?
aaaidan

1
Nếu tôi tự viết một gói, nó vẫn rất hay để biết, phải làm gì để lấp đầy npm buildý nghĩa ...
Frank Nocke

20

Kịch bản có tên là "xây dựng" trong package.jsonkhông có gì đặc biệt. Cách duy nhất để khiến nó chạy là gọi:

npm run-script build

Có một số tên được gọi tự động bởi npm , nhưng "build" không phải là một trong số chúng. Danh sách đầy đủ là:

  • prepublish, publish,postpublish
  • preinstall, install,postinstall
  • preuninstall, uninstall,postuninstall
  • preversion, version,postversion
  • pretest, test,posttest
  • prestop, stop,poststop
  • prestart, start,poststart
  • prerestart, restart,postrestart
  • preCUSTOMpostCUSTOMcho tên tập lệnh tùy chỉnh.

4

OK, để tự chạy một bản dựng, hãy sử dụng:

npm run-script build

3

Tôi đã có một vấn đề với việc npm run buildkhông in bất cứ điều gì. đã kết thúc bằng cách sử dụng npm run build --verboseđể có được đầu ra tôi cần.


2

Dự kiến xây dựng Npm

Một thư mục chứa tệp pack.json trong thư mục gốc của nó

Hãy thử sử dụng các tập lệnh npm trong gói.json của bạn, như khởi động npm cổ điển


Điều này có nghĩa là nó npm build .sẽ hoạt động và trong trường hợp của tôi, npm thực thi tập lệnh "build" trong "pack.json" của tôi như tôi hy vọng.
Erhhung
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.