Tôi có một dự án Node.js yêu cầu phiên bản Node 12 hoặc cao hơn. Có cách nào để xác định điều này trong tệp packages.json, do đó trình cài đặt sẽ tự động kiểm tra và thông báo cho người dùng nếu họ cần nâng cấp?Tôi có thể chỉ định phiên bản Node.js được yêu cầu trong packages.json như thế nào?
Trả lời
Tôi nghĩ bạn có thể sử dụng "động cơ" lĩnh vực:
{ "engines" : { "node" : ">=0.12" } }
Khi bạn đang nói mã của bạn chắc chắn sẽ không làm việc với bất kỳ phiên bản thấp hơn, bạn có thể muốn "engineStrict" cờ quá:
{ "engineStrict" : true }
Tài liệu cho các tập tin packages.json thể được tìm thấy on the npmjs site
cập nhật
engineStrict
hiện không được chấp nhận, do đó, điều này sẽ chỉ đưa ra cảnh báo. Hiện tại, người dùng có thể chạy npm config set engine-strict true
nếu họ muốn điều này.
https://github.com/npm /npm/blob/master/CHANGELOG.md#enginestrict "Tùy chọn package.json hiếm khi được sử dụng' engineStrict' đã không được dùng nữa ** trong vài tháng, tạo cảnh báo khi được sử dụng.Bắt đầu với npm @ 3, giá trị của trường này bị bỏ qua và vi phạm động cơ sẽ chỉ tạo cảnh báo. Nếu bạn, với tư cách là người dùng, muốn thực thi nghiêm ngặt các trường động cơ, chỉ cần chạy npm config set engine-strict true " –
Nhớ' cd .. && npm i
lý do tại sao trên trái đất họ không chấp nhận rằng .. nó mất tất cả ý nghĩa của nó sau đó – Filippos
Giống như đã nói Ibam, engineStrict
hiện không được chấp nhận. Nhưng tôi đã tìm thấy giải pháp này:
check-version.js:
import semver from 'semver';
import { engines } from './package';
const version = engines.node;
if (!semver.satisfies(process.version, version)) {
console.log(`Required node version ${version} not satisfied with current version ${process.version}.`);
process.exit(1);
}
package.json:
{
"name": "my package",
"engines": {
"node": ">=50.9" // intentionally so big version number
},
"scripts": {
"requirements-check": "babel-node check-version.js",
"postinstall": "npm run requirements-check"
}
}
Tìm hiểu thêm ở đây: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4
.nvmrc
Và một điều nữa ... Một dotfile '.nvmrc' có thể được sử dụng để yêu cầu phiên bản nút cụ thể (nhưng tôi đã không thử nó chưa) - https://github.com/creationix/nvm#nvmrc
Có một, đơn giản hơn cách để làm điều này:
npm install [email protected]
(tiết kiệm Node 8 như phụ thuộc vào package.json)- ứng dụng của bạn sẽ chạy bằng Node 8 cho ai - ngay cả người dùng Sợi!
Điều này hoạt động vì node
chỉ là gói đóng vai trò là nhị phân gói. Nó chỉ bao gồm node_module/.bin có nghĩa là nó chỉ làm cho nút sẵn sàng cho các kịch bản gói. Không phải vỏ chính.
Xem thảo luận trên Twitter ở đây: https://twitter.com/housecor/status/962347301456015360
- 1. Tôi chỉ có thể yêu cầu quyền trong một số phiên bản Android nhất định không?
- 2. Cách chỉ định phiên bản Java được yêu cầu trong một bản dựng Gradle
- 3. Tôi có thể sử dụng cú pháp phiên bản gói 5.12 mới mà không chỉ định phiên bản Perl được yêu cầu không?
- 4. Có cách nào để xác định phiên bản sbt được yêu cầu trong build.sbt không?
- 5. Chỉ thị angularjs có thể yêu cầu bản thân?
- 6. có yêu cầu về json trong node.js
- 7. Node.js - yêu cầu không được xác định ngoại lệ
- 8. Phiên bản gói cơ sở có liên quan như thế nào đến phiên bản GHC?
- 9. Cơ thể yêu cầu trông như thế nào?
- 10. Làm thế nào để ngăn chặn Node.js yêu cầu nhanh
- 11. Làm thế nào tôi có thể chỉ định một phiên bản Ruby tối thiểu trong một Gemfile?
- 12. Tôi có thể chỉ định thông tin xác thực RabbitMQ trong node.js không?
- 13. Yêu cầu bất kỳ phiên bản mẫu nào
- 14. Phiên bản nào sẽ được chọn bởi yêu cầu MSXML2.XMLHTTP, không có hậu tố phiên bản?
- 15. Node.js xử lý các yêu cầu đồng thời bằng một chuỗi như thế nào?
- 16. node.js internals: Làm thế nào tôi có thể tìm ra nơi `process.binding ('eval')` được định nghĩa?
- 17. Tôi có thể buộc window.location thực hiện yêu cầu HTTP thay vì sử dụng bộ nhớ cache như thế nào?
- 18. Làm thế nào tôi có thể xem phiên bản Delphi nào mà .dcu được biên dịch?
- 19. Giải quyết lỗi "Không xác định tham chiếuGỗi: yêu cầu không được xác định" trong Node.js
- 20. Chúng tôi có thể chỉ định phiên bản tệp khi tạo tệp trong C# không?
- 21. Máy chủ Node.js với nhiều yêu cầu đồng thời, nó hoạt động như thế nào?
- 22. Cầu cảng xử lý nhiều yêu cầu như thế nào
- 23. Bạn không thể chỉ định cùng một đá quý hai lần với các yêu cầu phiên bản khác nhau
- 24. Yêu cầu thả trong node.js express
- 25. Chỉ định các trường được trả về trong Node.js/Waterline?
- 26. Công cụ để xác định phiên bản Python thấp nhất được yêu cầu?
- 27. Sử dụng nHibernate, làm thế nào tôi có thể đọc không được yêu cầu?
- 28. Làm thế nào để chỉ định một giao diện mạng khi thực hiện các yêu cầu mạng từ Node.js?
- 29. Làm thế nào tôi có thể yêu cầu Intellij ngừng gạch chân mã scala của tôi?
- 30. Làm thế nào tôi có thể đăng nhập toàn bộ yêu cầu HTTP trong WAI/scotty?
Một cách tương tự như phản ứng của Adam, cũng sử dụng node.version: https://stackoverflow.com/a/48691987/3032209 –