Currently bootstrap-sass needs to be resolvable from bootstrap-loader/lib/utils/resolveModule.js.
This means that bootstrap-sass is a peer dependency on bootstrap-loader.
Custom module systems such as pnpm will not be able to find peer deps if they are not explicitly specified in the package.json.
So firstly, it should be declared as a peer dependency. But because you need bootstrap or bootstrap-sass depending on the version, this would create warning messages.
A better approach might be to allow specifying the location of bootstrap-sass or make the resolver context configurable - util/resolveModules.js, resolve.baseDir option.
It's currently not possible to override (pass in as absolute value from ?boostrapPath=) as seen here:
// Resolve `bootstrap` package
var bootstrapNPMModule = bootstrapVersion === 3 ? 'bootstrap-sass' : 'bootstrap';
_logger2.default.debug('Using Bootstrap module:', bootstrapNPMModule);
config.bootstrapPath = (0, _resolveModule2.default)(bootstrapNPMModule);
...and the config option is not parsed in bootstrap.config.js.
FYI: The use case is if you wanted to create a module which contained all bootstrap related stuff to reduce number of deps declared in your app package.json (instead of having to install bootstrap-sass and all the loaders manually).
E.g.
app
- node_modules
- webpack-stuff
- node_modules
- bootstrap-loader
- bootstrap-sass
- style-loader
- ...
Currently
bootstrap-sassneeds to be resolvable frombootstrap-loader/lib/utils/resolveModule.js.This means that
bootstrap-sassis a peer dependency onbootstrap-loader.Custom module systems such as pnpm will not be able to find peer deps if they are not explicitly specified in the
package.json.So firstly, it should be declared as a peer dependency. But because you need
bootstraporbootstrap-sassdepending on the version, this would create warning messages.A better approach might be to allow specifying the location of
bootstrap-sassor make the resolver context configurable -util/resolveModules.js,resolve.baseDiroption.It's currently not possible to override (pass in as absolute value from
?boostrapPath=) as seen here:...and the config option is not parsed in
bootstrap.config.js.FYI: The use case is if you wanted to create a module which contained all bootstrap related stuff to reduce number of deps declared in your app
package.json(instead of having to install bootstrap-sass and all the loaders manually).E.g.