Я использую некоторые пакеты npm в моем проекте. У двух из них есть неправильное поле main
. Можно ли их переопределить?npm - package.json переопределить основное поле
Я использую webpack. Я нашел решение here.
Это работает для основного поля, но мне также нужен css-файл из того же пакета. Я ссылаюсь на него ~package/css/style.css
в файле index.scss
. При решении выше он разрешает путь с path/to/main.js/css/style.css
(с main.js) вместо path/to/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';
. Это работает.
Когда я добавляю 'bootstrap-treeview': path.join(_path, 'node_modules', 'bootstrap-treeview', 'src', 'js', 'bootstrap-treeview.js')
как псевдоним в webpack import 'bootstrap-treeview';
работает, но css not (как описано выше).
- 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 смотри выше.
Ошибка с самозагрузки-TreeView псевдоним:
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 ...
Вы уверены, что вы загружаете '.scss' файлы в Webpack? Не могли бы вы разместить код, где вы ссылаетесь на 'index.scss' и' style.css'? – Pavlo
С '~ package/css/style.css' он работает. Как только я добавляю «псевдоним» в поле разрешения webpack, он решает его, как описано. – Piu130
В 'bower.json' есть поле 'overrides' для точной этой цели. Есть ли что-то подобное в 'package.json'? – Piu130