2017-12-28 135 views
5

Tôi có nhiệm vụ sau đó xây dựng ứng dụng của tôi:Làm thế nào để truy cập rootPath bộ từ nhiệm vụ ngụm từ bên trong ứng dụng góc

const app = new Metalsmith(config.styleguide.path.root); 
app.use(
     msDefine({ 
      production: false, 
      rootPath: '/' 
     }) 
    ); 

app.use(
    msIf(
     gutil.env.config === 'release', 
     msDefine({ 
      production: true, 
      rootPath: '/styleguide/' 
     }) 
    ) 
); 
app.build(...); 

tôi cần phải truy cập vào rootPath từ bên trong ứng dụng, ví dụ:

import stuff from 'stuff'; 
export class IconCtrl ... 
    ... 
    _getIconPath(name: string, size: string): string { 

     switch (this.version) { 
     case 'current': 
      return `${stuff.rootPath()}/current/icn-${name}-${size}.svg`; 
     default: 
      return `${stuff.rootPath()}/legacy/${name}.svg`; 
     } 
    } 
    ... 

Tôi đã không tìm thấy một cách sạch sẽ để làm điều đó cho đến nay. Tôi không chắc chắn làm thế nào để truy cập vào cấu hình ứng dụng tại thời gian xây dựng từ bên trong ứng dụng.

+1

Xin vui lòng không làm điều đó. Đặt một hằng số nhà cung cấp bootstrap ứng dụng riêng biệt hoặc tạo một tệp json có thể được truy cập bởi cả hai – Gary

+0

Bạn có cân nhắc thay đổi basepath không? Https: //www.w3schools.com/tags/tag_base.asp – jornare

Trả lời

2

bạn có thể sử dụng thứ gì đó như gulp-inject-scripts. https://www.npmjs.com/package/gulp-inject-scripts

Ví dụ

var gulp = require('gulp'); 
var injectScripts = require('gulp-inject-scripts'); 

gulp.task('inject:script', function(){ 
    return gulp.src('./demo/src/*.html') 
    .pipe(injectScripts({ 
     baseDir "./demo/dist" // SET BASE DIRECTORY 
    })) 
    .pipe(gulp.dest('./demo/dist')); 
}); 
+0

Nếu điều này làm việc cho bạn, bạn có thể xin vui lòng đánh dấu nó như là câu trả lời? Cảm ơn – racamp101

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