Ember-cli获得依赖的相对路径

时间:2015-05-26 15:55:49

标签: javascript ember.js ember-cli

我有一个独特的问题,我无法解决,因为ember如何使用依赖项。 我正在使用此lib来查看电话号码:https://github.com/Bluefieldscom/intl-tel-input/#utilities-script

它工作正常,直到我必须设置文件调用util.js的相对路径,以使一些选项有效:

 $phoneInput.intlTelInput({
                    allowExtensions: false,
                    autoFormat: true,
                    autoHideDialCode: false,
                    nationalMode: false,
                    utilsScript: "/bower_components/intl-tel-input/lib/libphonenumber/build/utils.js"
                });

正如您所看到的,我尝试使用/bower_components/intl-tel-input/lib/libphonenumber/build/utils.js,但无法找到它。我还尝试添加assets/../bower_...,但没有任何效果,我担心这是不可能的。

我确实在我的Brocfile.js中导入了文件:

app.import('bower_components/intl-tel-input/lib/libphonenumber/build/utils.js');

我可以在源头中看到它。

有没有办法知道依赖的相对路径?

我忘了确切地说我正在didInsertElement内的视图初始化intlTelInput。

感谢。

1 个答案:

答案 0 :(得分:0)

根据我的理解,你无法引用util文件,因为它没有被复制到dev服务器所服务的dist文件夹中。

有两种方法可以将文件复制到dist文件夹中。

  1. util.js放入public文件夹。公用文件夹的内容将原样复制到dist文件夹中。然后你应该能够像引用图像或字体那样引用它的路径。

  2. 使用broccoli-funnelbroccoli-merge-trees插件。

  3. 使用npm安装两个软件包。

    npm install --save-dev broccoli-funnel
    npm install --save-dev broccoli-merge-trees 
    

    在你Brocfile.js

    var EmberApp = require('ember-cli/lib/broccoli/ember-app');
    var app = new EmberApp();
    
    var funnel = require('broccoli-funnel');
    var mergeTrees = require('broccoli-merge-trees');
    
    var utilFile = funnel('vendor', {
      srcDir: 'intl-tel-input-master/lib/libphonenumber/build',
      destDir: 'lib/intl-tel-input-master'
    });
    
    //module.exports = app.toTree();
    module.exports = mergeTrees([app.toTree(), utilFile]);
    

    我已将手机库复制到我的vendor文件夹中。所以我使用broccoli-funnel选择util.js文件和broccoli-merge-trees将文件复制到dist文件夹中。

    现在你的插件可以访问util文件。