2013-10-01 11 views
7

Tôi đang quản lý dự án được viết bằng angularjs, với cấu trúc thư mục mặc định, ngoại trừ thư mục ứng dụng sử dụng phiên bản (ví dụ: "app/0.0.0 /", "app/0.1.0 /" v.v ..).Tôi làm cách nào để sử dụng thuộc tính "phiên bản" trong package.json làm thư mục của ứng dụng bị lẩm bẩm?

Tôi đang cố gắng sử dụng thuộc tính "phiên bản" của gói package.json để tải đúng thư mục vì vậy tôi sẽ không phải thay đổi đường dẫn ứng dụng theo cách thủ công trong gruntfile.js nhưng vì một lý do nào đó mà tôi tiếp tục nhận được " Không thể GET/"khi tôi chạy" máy chủ grunt ".

Để giải thích tốt hơn này, đây là một mẫu của gruntfile.js tôi:

var yeomanConfig = { 
app: 'app/<% pkg.version %>/', 
dist: 'dist' 
... 

grunt.initConfig({ 
    yeoman: yeomanConfig, 
    pkg: grunt.file.readJSON('package.json'), 
... 

Nếu tôi tự thay đổi thuộc tính ứng dụng để "ứng dụng/0.0.0" nó hoạt động như một nét duyên dáng vì vậy tôi đoán điều này có liên quan đến việc tạo khuôn mẫu.

Bất kỳ ý tưởng nào?

Cảm ơn bạn rất nhiều vì đã giúp đỡ.

Edit: Cảm ơn bạn đã chỉnh Andreas và Matjaz, nhưng điều này không giải quyết vấn đề và đưa ra các lỗi tương tự ... này giải quyết vấn đề đối với tôi nhưng không có hệ thống khuôn mẫu:

var pkgVersion = grunt.file.readJSON('package.json').version; 
// configurable paths 
var yeomanConfig = { 
    app: 'app/'+pkgVersion, 
    dist: 'dist' 
}; 

Nó khá xấu xí nhưng nó hoạt động. Hy vọng cho một giải pháp thích hợp.

+0

Còn về '<% = pkg.version%>' thì sao? Lưu ý rằng "=" –

+0

Cảm ơn tôi đã vô tình xóa "=" nhưng ngay cả sau khi sửa nó, vấn đề vẫn tồn tại. – onearmfrog

Trả lời

3

Để vang dữ liệu sử dụng <%=:

<%= pkg.version %> 
13

Cách tốt nhất để xử lý trên kịch bản là, Trong grunt.initConfig xác định package.json

grunt.initConfig({ 
    pkg: grunt.file.readJSON("package.json") 
}) 

Khi ở trên khởi tạo, bạn có thể sử dụng các thuộc tính của package.json trong suốt tệp grunt.js.

<%= pkg.version %> 
<%= pkg.homepage %> 
+0

Đó chính xác là những gì tôi đang làm .. Hệ thống tạo khuôn mẫu dường như không hoạt động bên ngoài grunt.initConfig do đó bạn không thể sử dụng <% %>. – onearmfrog

+0

Nếu nó không hoạt động bên ngoài grunt.initConfig hãy thử lưu trữ nó trong một biến và sử dụng lại nó. – kartikluke

2

tôi mở rộng appConfig với tên và phiên bản:

var appConfig = { 
    app: require('./bower.json').appPath || 'app', 
    name: require('./package.json').name || 'angularapp', 
    version: require('./package.json').version || '1.0.0', 
    dist: 'dist' 
}; 

Sau đó, bạn có thể truy cập các biến như thế này:

<%= yeoman.name %> 
<%= yeoman.version %> 

Đối với tôi một giải pháp sạch với tiêu chuẩn dự phòng bắt buộc.

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