私のプロジェクトでは、いくつかのnpmパッケージを使用しています。それらのうちの2つは間違ったmain
-fieldを持っています。それらを無効にすることは可能ですか?npm - package.jsonメインフィールドを上書きする
私はwebpackを使用します。私は解決策を見つけたhere。
これはメインフィールドで機能しますが、同じパッケージからのCSSファイルも必要です。私はindex.scss
ファイルの中で~package/css/style.css
と呼んでいます。上記の解決方法では、path/to/css/style.css
(main.jsなし)の代わりにpath/to/main.js/css/style.css
(main.jsを使用)のパスを解決します。
私はそれを直接参照することができます../node_modules/path/to/css/style.css
しかし、私はそれが醜いと思います。
このメインフィールドをオーバーライドするためにwebpackまたはnpmを使用する他の解決策がありますか?
- EDIT -
私はパッケージとしてbootstrap-treeview
使用。私はindex.scss
のようにそれを参照してください @import '~bootstrap-treeview/src/css/bootstrap-treeview.css';
のように。これは機能します。
webpack import 'bootstrap-treeview';
ではエイリアスとして'bootstrap-treeview': path.join(_path, 'node_modules', 'bootstrap-treeview', 'src', 'js', 'bootstrap-treeview.js')
を追加しても、CSSは動作しません(上記の説明のとおり)。
- EDIT 2 -
webpack.conf.js:
resolve: {
extensions: ['', '.js'],
modulesDirectories: ['node_modules'],
alias: {
// bootstrap-treeview alias
'bootstrap-treeview': path.join(_path, 'node_modules', 'bootstrap-treeview', 'src', 'js', 'bootstrap-treeview.js')
}
},
module: {
loaders: [
{
test: /\.css$/,
loaders: [
'style-loader',
'css-loader?sourceMap',
'postcss-loader'
]
},
{
test: /\.(scss|sass)$/,
loader: 'style-loader!css-loader?sourceMap!postcss-loader!sass-loader?outputStyle=expanded&sourceMap=true&sourceMapContents=true
}
]
}
上記参照index.scss。ブートストラップ・ツリービューの別名を持つ
エラー:別名なし
Module not found: Error: Cannot resolve 'file' or 'directory' /home/ekf/develop/generator-angular-webpack/node_modules/bootstrap-treeview/src/js/bootstrap-treeview.js/src/css/bootstrap-treeview.css in ...
がエラー:
Module not found: Error: Cannot resolve module 'bootstrap-treeview' in ...
Webpackで '.scss'ファイルをロードしていますか? 'index.scss'と' style.css'を参照しているところにコードを投稿できますか? – Pavlo
'〜package/css/style.css'で動作します。 webpack解決フィールドに「エイリアス」を追加すると、説明に従って解決されます。 – Piu130
'バウアー。json'には、正確な目的のために 'オーバーライド'フィールドがあります。 'package.json'に似たものはありますか? – Piu130