2016-10-24 4 views
0

私は、package.jsonスクリプトブロックからnpmでbrowserifyを呼び出します。ここに、スクリプトの簡略版があります。access browserify -rカルマのparams

"build:js": "browserify -r ./config.js:config -e -d src/index.js > build/index.js" 

すべてがうまくいきます。 index.jsの中で、このパラメータを参照するのはrequire('config')です。残りの部分はbrowserifyで処理します。

私はテストのためにbrowserifyでカルマをセットアップしようとしています。カルマブラウザーはその変数を見つけることができません。私の周り見てきたし、あまり見つかっていないが、browserifyオブジェクト内の私のkarma.conf.jsrequire: ['./src/app/config/config-dev.js']を追加しようとしましたので、のように:

browserify: { 
    debug: true, 
    require: ['./src/app/config/config-dev.js'] 
} 

しかし、カルマは、インデックスに必要と声明間の接続を行うことはありませんパラメータファイルには何も指定されていないため、何も指定しないでください。私が知る必要があるのは、browserify CLIを使ってparamを追加するときのカルマの構文です。

私がここで試してみたいことについて、これを説明したり、アイデアを説明しているドキュメントへのポインタは、非常に役立ちます。ありがとう!

+0

'config.js'の' require 'を短くすることで、何を達成したいと考えていますか?あなたは環境や他の何かに基づいて別の設定を得ることができますか? – casr

+0

私はあなたの質問を理解していません。私は何を短縮していますか?私は質問に関係のない部分を削除するためにscriptコマンドを省略しました。それはあなたが意味することですか? @casr – Kraken

+0

私の推測では、プロダクション環境とテスト環境に異なる設定を含めることにしましたか? – casr

答えて

0

package.jsonに必要な解像度を"browser" fieldに追加してください。

例:

"browser": { 
    "config": "./config" 
} 
+0

これについて少し説明できますか? – Kraken

+0

'browserify'は、常にサーバ側のcommonjs形式のモジュールをブラウザに取り込むことを意図していました。すべてのモジュールがブラウザで動作するわけではないので、上書きを設定するための ''ブラウザ ''キーがあります。この場合、 'require(" config ")'が 'browserify'によって見つかるたびに' require( "./ config") 'に置き換えられます。 – casr

+0

私はまだあなたの推薦を理解するか分からない。ビルドでは、ブラウザのすべてが正しく組み立てられます。私はkarma-browserifyに同じ設定オブジェクトを渡す方法を理解しようとしています。 – Kraken

0

ご使用の環境に基づいて異なる設定を持つようにしようとしている場合は、あなたが行うことができます:

./config.js:あなたのpackage.jsonあなたの中に、その後

if (process.env.NODE_ENV === 'production') { 
    module.exports = { /* production config */ }; 
} else if (process.env.NODE_ENV === 'development') { 
    module.exports = { /* development config */ }; 
} else if (process.env.NODE_ENV === 'test') { 
    module.exports = { /* test config */ }; 
} 

"scripts": { 
    "build:js": "NODE_ENV=production browserify -d -e src/index.js", 
    "test": "NODE_ENV=test karma" 
}, 
"browserify": { 
    "transform": [ 
    "envify" 
    ] 
} 

envifyは、環境変数をコード内の文字列で直接置き換えることができる重要な部分です。例:process.env.NODE_ENV === 'development'は単に'development' === 'development'になる場合があります。そのようなものはuglifyjsのような小型化ツールで取り除くことができます。

+0

私はすでにbrowserifyスクリプトを使って環境に基づいて別のビルドを持っています。私はkarma-browserifyに環境パラメータを渡そうとしています。 – Kraken

関連する問題