Normalmente, você não deseja expor nenhum dos seus caminhos internos para saber como o servidor está estruturado para o mundo externo. O que você pode é criar uma /scripts
rota estática em seu servidor que busca seus arquivos em qualquer diretório em que residam. Portanto, se seus arquivos estiverem "./node_modules/bootstrap/dist/"
. Em seguida, a tag de script em suas páginas fica assim:
<script src="/scripts/bootstrap.min.js"></script>
Se você estava usando express com nodejs, uma rota estática é tão simples quanto isto:
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
Em seguida, todas as solicitações de navegador /scripts/xxx.js
serão buscadas automaticamente no seu dist
diretório em __dirname + /node_modules/bootstrap/dist/xxx.js
.
Nota: As versões mais recentes do NPM colocam mais coisas no nível superior, não aninhadas tão profundamente; portanto, se você estiver usando uma versão mais recente do NPM, os nomes dos caminhos serão diferentes dos indicados na pergunta do OP e na resposta atual. Mas, o conceito ainda é o mesmo. Você descobrir onde os arquivos estão localizados fisicamente na sua unidade de servidor e você faz um app.use()
com express.static()
para fazer um pseudo-caminho para esses arquivos para que você não está expondo a organização do sistema de arquivos do servidor real para o cliente.
Se você não deseja criar uma rota estática como essa, provavelmente é melhor copiar os scripts públicos para um caminho que o servidor da Web trate como /scripts
ou qualquer outra designação de nível superior que você deseja usar. Geralmente, você pode fazer essa cópia parte do seu processo de criação / implantação.
Se você deseja tornar público apenas um arquivo em particular em um diretório e nem tudo o que é encontrado nesse diretório, pode criar manualmente rotas individuais para cada arquivo, em vez de usar express.static()
como:
<script src="/bootstrap.min.js"></script>
E o código para criar uma rota para isso
app.get('/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});
Ou, se você ainda deseja delinear rotas para scripts /scripts
, faça o seguinte:
<script src="/scripts/bootstrap.min.js"></script>
E o código para criar uma rota para isso
app.get('/scripts/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});