2017-02-26 1 views
1

NPMパッケージを開発するとき、それは使用するのが一般的です:未解決のnpmリンクを回避symlinkには必要ですか?

npm link 

それは出版およびすべての時間を非公開を必要とせずに開発中の<myPackage>を変更することができます!開発者はローカルで変更を加えることができ、すぐにそれを見ることができます。

それは使用してプロジェクトにインストールされています:

npm link <myPackage> 

それは素晴らしいことだが、<myPackage>が必要です(パス)を持っている場合は問題があります。

symlinkの予想される場所ではなく、通常のnode_moduleのように、プロジェクトのローカルにする必要があります。たとえば、__dirnameとして<myPackage>の実際の場所を使用します。

module.exports = { 
    loadImage: function (filename) { 
    var img 
    if (typeof window !== 'undefined' && ({}).toString.call(window) === '[object Window]') { 
     try { 
     img = require('../../src/images/' + filename) 
     } catch (e) { 
     // Development only 
     img = require('./template/src/images/' + filename) 
     } 
    } else { 
     img = '/assets/images/' + filename 
    } 
    return img 
    } 
} 

をしかし、あなたが想像できるように、この原因は、ブラウザに警告メッセージ:

私は私の特定のケースのために、これまでに見つかったソリューションが正常に動作します。

私はこの問題の理由を知っていますが、理想的には、私はエラーを抑制したいと思います。

答えて

0

非常によくある質問ではないと私は信じています。この場合、警告メッセージを表示しないNPMパッケージの開発段階に固有の素晴らしいオプションがあります。

次のmodules.exportsは、アプリケーションに読み込むコードスニペットを公開しています。

module.exports = { 
    loadImage: function (filename) { 
    if (typeof window !== 'undefined' && ({}).toString.call(window) === '[object Window]') { 
     return (process.env.NPM_PACKAGE_DEV && require('./template/src/images/' + filename) || 
      require('./template/src/images/' + filename)) 
    } else { 
     return '/assets/images/' + filename 
    } 
    }, 
    isBrowser: function() { 
    return (typeof window !== 'undefined' && ({}).toString.call(window) === '[object Window]') 
    } 
} 

何これについては良いことだ、ノードサーバを初期化するよりも、あなたがOSXのターミナル(コマンドを実行してNPM_PACKAGE_DEVを設定することができるということです:あなたが必要です(パス)のフォールバックで、loadImage方法を見つけることができます構文):

export NPM_PACKAGE_DEV=1 && node server.js 

NPM_PACKAGE_DEVは、最終用途のパスに、必要()フォールバックを省略した場合、そのプロジェクトに関連していると、ディレクトリをnode_modules。

これは将来的に他の人に役立つことを願っています!

関連する問題