Olá pessoal,
Gostaria de entender porque o './' é utilizado no caminho relativo para buscar pelo dist/css/bootstrap.css.
O correto não seria iniciar o caminho relativo sem o './'?
Li na documentação do Webpack que é recomendado usar a propriedade context no objeto de configuração que é exportado no webpack.config.js (apontando para a pasta da aplicação 'app') e estou usando ela, portanto fiz algumas modificações:
module.exports = {
//Context. Explicitamente configura o diretório raiz que o webpack usa como referência para resolver os módulos, em vez do CurrentWorkingDirectory que onde a runtime do node executa
context: path.resolve(__dirname, 'app'),
entry: {
app: './src/js/app.js'
},
output:{
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'app/dist'),
clean: true
},
module: {
rules: [
{ test: /\.css$/, use: ['style-loader','css-loader'] }]
},
plugins: [
new HtmlWebpackPlugin(
{
template: './src/app.html',
filename: 'app.html',
hash: true
})
]
};
Dessa forma, se eu usar no meu app.js a declaração:
import './bootstrap/dist/css/bootstrap.css';
Ele apresenta um erro desse tipo:
ERROR in ./app/src/js/app.js 2:0-44
Module not found: Error: Can't resolve './bootstrap/dist/css/bootstrap.css' in 'C:\gs\GitHub\webpack\app\src\js'
resolve './bootstrap/dist/css/bootstrap.css' in 'C:\gs\GitHub\webpack\app\src\js'
using description file: C:\gs\GitHub\webpack\package.json (relative path: ./app/src/js)
Field 'browser' doesn't contain a valid alias configuration
using description file: C:\gs\GitHub\webpack\package.json (relative path: ./app/src/js/bootstrap/dist/css/bootstrap.css)
no extension
C:\gs\GitHub\webpack\app\src\js\bootstrap\dist\css\bootstrap.css doesn't exist
O correto não seria eu utilizar import 'bootstrap/dist/css/bootstrap.css';
?
Pois assim o compilador SEMPRE irá reconhecer o caminho como um módulo do node e não um caminho relativo ao CurrentWorkingDirectory. Considero então, como uma boa prática, omitir o uso do './'?
OBS: Fiz um texte omitindo o context e apresenta o mesmo erro, ele busca pelo .css do bootstrap dentro da minha pasta app, sendo que deveria buscar nos módulos do Node. Se eu omitir o ./ ele funciona perfeitamente e encontra o módulo do Bootstrap dentro de node_modules.