Câu trả lời:
Không sử dụng require('./package.json')
cho quá trình xem. Việc sử dụng require
sẽ giải quyết mô-đun dưới dạng kết quả của yêu cầu đầu tiên. Vì vậy, nếu bạn đang chỉnh sửa package.json, các chỉnh sửa đó sẽ không hoạt động trừ khi bạn dừng quá trình xem của mình và khởi động lại nó. Đối với quy trình xem gulp, tốt nhất là sử dụng phương pháp của bitlinguist vì nó sẽ đọc lại tệp và phân tích cú pháp mỗi khi tác vụ của bạn được thực thi.
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('./package.json'));
require
và xóa bộ nhớ cache vớidelete require.cache[require.resolve(FILEPATH)];
Điều này không cụ thể.
var p = require('./package.json')
p.homepage
CẬP NHẬT:
Lưu ý rằng "request" sẽ lưu vào bộ nhớ cache các kết quả đã đọc - nghĩa là bạn không thể yêu cầu, ghi vào tệp, sau đó yêu cầu lại và mong đợi kết quả được cập nhật.
Đây là một giải pháp tốt @Mangled Deutz. Bản thân tôi lần đầu tiên đã làm điều đó nhưng nó không hoạt động (Quay lại điều đó sau một giây), sau đó tôi đã thử giải pháp này:
# Gulpfile.coffee
requireJSON = (file) ->
fs = require "fs"
JSON.parse fs.readFileSync file
Bây giờ bạn sẽ thấy rằng điều này hơi dài dòng (mặc dù nó đã hoạt động). require('./package.json')
là giải pháp tốt nhất:
-hãy nhớ thêm './' vào trước tên tệp. Tôi biết nó đơn giản, nhưng nó là sự khác biệt giữa phương thức yêu cầu hoạt động và không hoạt động.
Nếu bạn đang kích hoạt nuốt chửng từ NPM, chẳng hạn như sử dụng " npm run build " hoặc thứ gì đó
(Điều này chỉ hoạt động đối với trình kích hoạt chạy gulp bởi NPM)
process.env.npm_package_ Object
điều này nên được phân tách bằng dấu gạch dưới cho các đối tượng sâu hơn.
nếu bạn muốn đọc một số cấu hình cụ thể trong package.json giống như bạn muốn đọc đối tượng cấu hình bạn đã tạo trong package.json
scripts : {
build: gulp
},
config : {
isClient: false.
}
sau đó bạn có thể sử dụng
process.env.npm_package_**config_isClient**