如何使用第三方npm包与ember cli app

Pre*_*exo 28 npm ember.js ember-cli

编辑: 这实际上是关于任何npm包,它不是与ember一起玩的.在我的情况下,我试图使crypto-js工作,但似乎总是同样的问题,任何不专门为ember cli设计的npm包.

我想在我的ember应用程序中使用cryptoJS,我目前正在使用ember cli进行重构,但是我在导入我已经使用的所有第三方软件包和库时遇到了很多麻烦,例如cryptoJS.

CryptoJS至少有一个npm的包,我甚至不想考虑如果我的一些包含的库没有包会发生什么...

我是否只是忽略了ember-cli文档中的要点,或者它是否真的没有描述如何导入其他npm包以及如何正确地包含非包文件库以使它们保持在版本控制和依赖控制之下?

如果我按照crypto-js包手册的描述:

var CryptoJS = require("crypto-js");
console.log(CryptoJS.HmacSHA1("Message", "Key"));
Run Code Online (Sandbox Code Playgroud)

我得到了错误 ember build

utils/customauthorizer.js: line 1, col 16, 'require' is not defined.
Run Code Online (Sandbox Code Playgroud)

感谢您对此的任何帮助,我对ember cli项目感到非常兴奋,但导入我现有的ember应用程序到目前为止一直非常痛苦...

编辑:

只是导入不幸不起作用.

import CryptoJS from 'crypto-js';
Run Code Online (Sandbox Code Playgroud)

在构建期间抛出

daily@dev1:~/VMD$ ember build
version: 0.1.2
Build failed.
File: vmd/utils/customauthorizer.js
ENOENT, no such file or directory '/home/daily/VMD/tmp/tree_merger-tmp_dest_dir-F7mfDQyP.tmp/crypto-js.js'
Error: ENOENT, no such file or directory '/home/daily/VMD/tmp/tree_merger-tmp_dest_dir-F7mfDQyP.tmp/crypto-js.js'
    at Error (native)
    at Object.fs.statSync (fs.js:721:18)
    at addModule (/home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:84:46)
    at addModule (/home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:133:9)
    at addModule (/home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:133:9)
    at /home/daily/VMD/node_modules/ember-cli/node_modules/broccoli-es6-concatenator/index.js:59:7
    at $$$internal$$tryCatch (/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:470:16)
    at $$$internal$$invokeCallback (/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:482:17)
    at $$$internal$$publish (/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:453:11)
    at $$rsvp$asap$$flush (/home/daily/VMD/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1531:9)
Run Code Online (Sandbox Code Playgroud)

Tim*_*imm 56

最简单和推荐的答案是使用ember-browserify.(因为将来会删除对凉亭包的支持.)

这是dexie在Ember CLI应用程序中使用npm包的示例.

安装browserify: npm install ember-browserify --save-dev

安装dexie(或您需要的任何模块): npm install dexie --save-dev

像这样导入模块: import Dexie from 'npm:dexie';


Pre*_*exo 6

更新:我让这项工作更好,更直接!感谢@j_mcnally的评论!

将第一个答案留在那里,这样每个人都可以看到我来自哪个麻烦:)

我做了什么:

bower install crypto-js=svn+http://crypto-js.googlecode.com/svn/#~3.1.2 --save

在我的文件中,Brocfile.js我可以做到app.import('bower_components/crypto-js/build/rollups/hmac-md5.js');

没有手动下载或移动文件,只需管理依赖,更好的解决方案!

但老实说,它仍然是很多vodoo!直到我找到文档... sweet:http://bower.io/docs/api/#install


老方法

我让这个工作,但我不知道这种方法有多漂亮或正确.包含带有ember cli的第三方软件包或库,远非直接或自我解释.

导致我使用我的工作解决方案的资源是:

我采取了以下步骤来实现它:

然后构建工作,我最终可以使用该库.

可悲的是,我没有让npm包工作!我不得不手动下载zip文件,解压缩并将其移动到正确的位置,如果版本发生变化,它不受任何版本/依赖控制...我不会将此标记为答案,因为它不能满足我的要求可是,但至少我想分享我所做的一切,让它对我有用.