2015-12-08 21 views
5

Hy vọng đây là một câu hỏi nhanh.Cách nạp giá trị biến vào tệp JS từ GULP

Điều tôi đang cố gắng làm là thêm dấu thời gian vào đối tượng Javascript trong tệp JS trong khi tệp đang được xây dựng bằng GULP. Về cơ bản, trong "file.js", tôi có một đối tượng mà tôi muốn có object.timeStamp bằng với thời gian của việc xây dựng GULP.

Tôi hiện đang thêm dấu thời gian vào đầu tệp bằng gulp-header, nhưng tôi đã được yêu cầu thêm dấu thời gian vào thuộc tính trong đối tượng.

Suy nghĩ của tôi là tiêm giá trị từ GULP, nhưng tất cả các plugin bổ trợ mà tôi đã tìm thấy cho đến nay là tiêm nội dung của một tệp vào tệp đích.

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

8

Bạn có đang sử dụng bất kỳ loại mô-đun nào không? Mô-đun ES6, AMD, CommonJS, ...?

Nếu vậy, bạn có thể tạo ra một cấu hình mô-đun với Gulp nơi bạn có thể tiêm bất kỳ biến mà bạn muốn. Nó sẽ giống như thế này:

config.tmpl.js

module.exports = <%= config %> 

cấu hình ngụm nhiệm vụ

var gulp = require('gulp'); 
var template = require('gulp-template'); 
var rename = require('gulp-rename'); 

gulp.task('config', function() { 
    return gulp.src('path/to/config.tmpl.js') 
    .pipe(template({config: JSON.stringify({ 
     timeStamp: new Date() 
    })})) 
    .pipe(rename('config.js')) 
    .pipe(gulp.dest('path/to/config.js')); 
}); 

và cuối cùng, trong tập tin JS của bạn

var config = require('path/to/config.js'); 

var object = { 
    timeStamp: config.timeStamp 
} 
1

O.K., vì vậy tôi đã tìm ra cách giải quyết giúp tôi trở thành nơi tôi muốn. Là người đầu tiên điều này được sử dụng ngụm-header để chèn một khai báo biến thành tập tin javascript của tôi sử dụng mã này:

Trong Gulp:

var d = new Date(); 
    .pipe(header("var timeStamp = '" + d +"';")) 

Sau đó, trong tập tin javascript, tôi thiết lập một tài sản trong đối tượng là một hàm và đặt thuộc tính timeStamp mà tôi đang tìm kiếm bằng cách lấy giá trị từ biến timeStamp được chèn ở trên bằng gulp-header, như sau:

Trong tệp JS, chức năng tiêu đề chèn:

var timeStamp = 'Tue Dec 08 2015 15:15:11 GMT-0800 (PST)'; 

Và sau đó chức năng của tôi, trong Object JS chỉ đơn giản là thế này:

ts: function(){ 
    object.timeStamp = timeStamp; 
    }, 

nào, khi được gọi, chạy và đặt dấu thời gian bên trong của đối tượng.

Dường như có cách dễ dàng hơn để thực hiện việc này, nhưng hiện tại, tính năng này đang hoạt động.

Nếu bạn có bất kỳ ý tưởng nào để cải thiện, tôi rất muốn nghe chúng!

Các vấn đề liên quan