Есть свой пакет (company-pack) в локальном npm-репозитории. Внутри него своя сетка на SASS и две версии: desktop.scss и mobile.scss, которые собирают разные стили (это важно).
Способ 1, работает:
entry: {
desktop: './node_modules/company-pack/scss/desktop.scss',
mobile: './node_modules/company-pack/scss/mobile.scss'
},
module: {
rules: [
{
test: /\.js$/,
exclude: ['/node_modules/'],
use: [{
loader: 'babel-loader'
}]
},
{
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
sourceMap: true
}
},
{
loader:'sass-loader',
options: {
sourceMap: true
}
}
]
}
]
},
plugins: [
new FixStyleOnlyEntriesPlugin(),
new MiniCssExtractPlugin(is_production ? {
filename: 'css/[name].min.css',
chunkFilename: 'css/[name].min.css',
sourceMap: true,
} : {
filename: 'css/[name].css',
chunkFilename: 'css/[name].css',
sourceMap: false,
}),
]
Но в первом способе руками прописываются пути к scss. А хотелось, чтобы вызов был как импорт из main.js
и результатом работы webpack было два файла: desktop.css и mobile.css. На данный момент он собирает всё в один main.css, если в
webpack.config.jsentry: {
main: './main.js,
},
и
main.js import { CssModules } from 'company-pack';
и в
index.js пакета
import Desktop from './scss/desktop.scss';
import Mobile from './scss/mobile.scss';
export default CssModules(Desktop, Mobile);