cuốn sách gpt4 ai đã làm

Điều gì xảy ra khi bạn chạy lệnh npm run

In lại Tác giả: Người biết Thời gian cập nhật: 2024-03-13 10:02:03 25 4
mua khóa gpt4 Nike

Bài viết này được chia sẻ từ Cộng đồng Huawei Cloud"Điều gì xảy ra khi bạn chạy lệnh npm run?", tác giả: Gentle_zhou.

Trước đây đã đăng một bài viết"Điều gì xảy ra khi tôi chạy lệnh cài đặt npm?"bài viết phân tích đầu vàocài đặt npmMột chuỗi những gì xảy ra sau một lệnh. Mấy bạn đọc bài hỏi mình rồi chạychạy npmĐiều gì sẽ xảy ra sau lệnh, bài viết này ở đây.

trường kịch bản

Khi chúng ta sử dụng npm (trình quản lý gói nút) để quản lý các dự án JavaScript/TypeScript, một tệp pack.json sẽ được tạo trong thư mục gốc của dự án. Trường script trong tệp này được sử dụng để điều chỉnhnpm chạy XXXra lệnh. Ví dụ: hãy xem tệp pack.json trong hình bên dưới:

"name": "angular-cli-xxxx-project", "version": "0.0.0", "scripts": { "ng": "ng", "start": "node ./src/index.js ", "build": "ng build", "watch": "ng build --watch --configuration Development", "test": "ng test" }

Vì vậy, khi chúng ta chạynpm chạy xây dựngKhi thực thi lệnh, bạn sẽ tìm thấy nó trong trường script.xây dựngtương ứngxây dựngLệnh để thực hiện. Một số bạn có thể hỏi, tại sao nó không thể được thực hiện trực tiếp?xây dựngĐơn đặt hàng ở đâu? Bởi vì điều này sẽ báo lỗi nên chỉ có các lệnh liên quan đến npm trong hệ điều hành là không tồn tại.xây dựngLệnh này; khi chúng ta tải xuống và cài đặt các phần phụ thuộc, một tệp thực thi có tên ng sẽ được tạo trong thư mục node_modules/.bin:
 

Thư mục .bin không phải là bất kỳ gói npm nào. Các tệp thực thi trong đó đều là các liên kết mềm; các thư mục khác trong thư mục node_modules là từng mô-đun phụ thuộc được tải xuống.

Trong thư mục .bin, thường có ba tệp thực thi cho một mô-đun phụ thuộc. Một tệp không có hậu tố là tập lệnh shell tương ứng với hệ thống Unix, tệp có hậu tố .cmd là tập lệnh windows bat và tệp còn lại. với hậu tố .ps1 Đây là một tệp thực thi trong PowerShell (có thể đa nền tảng),Ba chức năng này là sử dụng nút để thực thi tệp js.. Chúng ta có thể mở tệp có tên ng và xem nội dung của nó:

Từ đó, chúng ta biết rằng khi chúng ta chạynpm chạy xây dựngKhi thực thi lệnh, mặc dù ng không được cài đặt trên toàn cầu, nhưng npm sẽ tìm tệp ng.js trong thư mục ./node_modules/.bin và thực thi nó dưới dạng tập lệnh nút, tương đương với việc thực thi../node_modules/.bin/ng xây dựnglệnh (bản dựng cuối cùng được truyền vào dưới dạng tham số).

Vậy tại sao nó có thể được thực thi mặc định khi thực hiện lệnh start?nút server.jsĐơn đặt hàng ở đâu? Đó là vì nút đã được cài đặt trên toàn cầu và có thể được gọi trực tiếp. Thêm một từ nữa ở đây, nếu không có trường scriptbắt đầu, sẽ không có lỗi nào được báo cáo và nó sẽ được thực thi theo mặc định.nút server.jsĐặt hàng.

ps: Nếu chúng ta chỉ chạychạy npmlệnh, thì tất cả các lệnh script trong trường script sẽ được thực thi.

Liên kết mềm trong thư mục .bin

Chúng ta tiếp tục nhìn xuống dưới. Vì các file thực thi trong thư mục .bin là các liên kết mềm, vậy các file liên kết mềm này đến từ đâu? Làm sao npm biết những liên kết mềm này trỏ đến đâu?

Chúng ta có thể trực tiếp tìm kiếm ng.js trong tệp pack-lock.json trong thư mục gốc của dự án. Chúng ta có thể thấy rằng npm khai báo bin/ng.js là bin khi cài đặt:

Do đó, khi npm được cài đặt, tệp bin/ng.js được liên kết mềm với thư mục ./node_modules/.bin và npm sẽ tự động thêm node_modules/.bin vào biến $PATH, do đó ng không cần phải thêm được cài đặt trên toàn cầu Bây giờ, bạn có thể chạy và phát triển các chương trình phụ thuộc trực tiếp dưới dạng lệnh. Nói cách khác, một liên kết mềm tương đương với một ánh xạ.npm runxxxKhi , bạn sẽ tìm thấy tệp ánh xạ tương ứng trong thư mục node_modules/.bin, sau đó tìm tệp js tương ứng để thực thi.

Và nếu chúng ta muốn sử dụng trực tiếp lệnh cài đặt chung mà không cần sử dụng liên kết mềm, chúng ta cần sử dụngcài đặt npm -gxxxĐể cài đặt phần phụ thuộc này, tệp bin trong xxx sẽ được thêm vào toàn cục theo cách này, giống như nút, bạn có thể sử dụng trực tiếp như vậy;bản dựng xxxMột mệnh lệnh như vậy.

Nhấp để theo dõi và tìm hiểu về các công nghệ mới của Huawei Cloud càng sớm càng tốt~

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress