在内置vue时添加自定义javascript部分

在内置vue时添加自定义javascript部分,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我正在使用Vue CLI,希望在发布时将自定义javascript部分添加到默认模板中。我不一定希望在调试期间注入此部分 示例:(我想在运行npm运行构建时添加以下内容,但在运行npm运行服务时不显示) 如果(window.location.protocol!=“https:”){ window.location.protocol=“https:”; window.location.reload(); } 将其放入index.html中。。。 vue只重写div应用程序(默认情况下)将其添加

我正在使用Vue CLI,希望在发布时将自定义javascript部分添加到默认模板中。我不一定希望在调试期间注入此部分

示例:(我想在运行npm运行构建时添加以下内容,但在运行npm运行服务时不显示)


如果(window.location.protocol!=“https:”){
window.location.protocol=“https:”;
window.location.reload();
}

将其放入index.html中。。。
vue只重写div应用程序(默认情况下)

将其添加到您的main.js

//...

if (process.env.NODE_ENV === "production") {
  if (window.location.protocol != "https:") {
    window.location.protocol = "https:";
    window.location.reload();
  }
}

// ...
// new Vue({})

问题是您只能在运行时读取环境变量。如果要在运行前根据环境更改
index.html
文件,有一些难看的解决方法:

其思想是将另一个
index.html
文件从另一个源(目录)交换到另一个
index.html
。每个
index.html
都由所需的html和javascript组成。要“交换”文件,您应该使用一些带有说明的
build.sh
文件,或者如果您喜欢NodeJS,可以使用
build.js
。在此之后,您的
npm运行构建将类似于:
“构建”:“node build.js”

下面是我的老项目中的
build.js
的一个例子(它不是最优的,非常难看,但确实有效):

const mv=require(“mv”);
常量繁殖=需要(“交叉繁殖”);
log(“为构建准备环境…”);
mv(“公共的”,“公共的”,错误=>{
if(err)console.log(err);
});
mv(“构建”、“公共”,错误=>{
if(err)console.log(err);
});
控制台日志(“建筑…”);
const build=spawn.sync(“npm”、“run”、“prod”);
log(`stderr:${build.stderr.toString()}`);
log(`stdout:${build.stdout.toString()}`);
log(“将环境恢复到开发…”);
mv(“公共”、“构建”,错误=>{
if(err)console.log(err);
});
新承诺((解决、拒绝)=>{
mv(“公共”、“公共”,拒绝);
解决();
}).然后(()=>{
console.log(“完成!”);
});

是的,对于该场景,(如果在生产环境中使用http,则重定向到https)@NikitaK感谢您的有效建议,是否有方法针对不同的环境修改模板,例如(生产环境或本地环境)。假设我想根据目标环境添加一个html元素?我在下面发布了另一个建议。不要问这个承诺在那里做什么。我不记得了
//...

if (process.env.NODE_ENV === "production") {
  if (window.location.protocol != "https:") {
    window.location.protocol = "https:";
    window.location.reload();
  }
}

// ...
// new Vue({})