2016-10-02 66 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導入/導出支持的支持。 –