2016-10-02 68 views
1

我安装了npm smooth-scroll,这是一个不支持导入语法的包。在Webpack中导入使用npm安装的“常规”javascript包

我相信它会工作如果我手动复制源代码到库库,并使用一个脚本标签:

<script src="/libs/smooth-scroll.js"></script> 

可是我怎么用进口语法它。我试过两个选项,但都没有工作。

选项A:

import scroller from 'smooth-scroll'; 

选项B:

import {scroller} from 'smooth-scroll'; 

这是一个猜测,显然不是为了工作,而是如何做一个使用进口并获得的WebPack到服务它?

UPDATE:

我注意到,在包的源与下面一行开始:

(function (root, factory) { 
    if (typeof define === 'function' && define.amd) { 
     define([], factory(root)); 
    } else if (typeof exports === 'object') { 
     module.exports = factory(root); 
    } else { 
     root.smoothScroll = factory(root); 
    } 
})(typeof global !== 'undefined' ? global : this.window || this.global, (function (root) { 
... 

这是否意味着包已经支持ES2015进口?

回答

1

最简单的答案将进入平稳scroll.js的源代码,添加到底部:

export default smoothScrollFunction; 

哪里smoothScrollFunction是函数/对象/你正在想什么进口。然后,导入语句可以在其他代码中使用:

import scroller from "./lib/smooth-scroller"; 

这就是导入和导出与ES2015一起使用的方式。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export

+0

这很好理解。然而,这意味着当我在新电脑上安装项目时,“npm install”不起作用。尽管投票!谢谢 – Guy

+0

你可以制作一个安装脚本,将导出行放在文件末尾,并将其放在package.json中的'scripts'中,这样你就可以使用'npm run whatever'(无论是你在'脚本“),或者发送一个pull请求给smooth-scroll的维护者以添加对ES2015导入/导出支持的支持。 –