我能找到的解决方案都需要安装一个npm包来启动一个http服务器以托管文件。我的唯一要求是通过npm脚本在浏览器中打开一个非常简单的本地生成的html文件,不需要服务器,这可行吗?没有包可以实现吗?
我试过了Daniel的答案,但对我无效。
根据他的答案,我找到了open-cli
包。
npm i -D open-cli
然后在 package.json 的 script 对象中像这样使用它(open-cli
)
{
"name": "somename",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"open-my-html": "open-cli path/to/your/index.html",
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies: {
"open-cli": "^6.0.1"
},
"author": "",
"license": "ISC"
}
然后运行
npm run open-my-html
我发现可以创建一个包含内容的bash脚本
#!/bin/bash
start chrome "$(realpath "./jest/report.html")"
运行该程序
,保留HTML,不进行解释。"test": "jest && bash ./open-browser.sh"
"test": "jest && bash -c \"start chrome \"$(realpath ./jest/report.html)\"\""
。 - RobCconst open = require('open');
(async () => {
await open('index.html', {"wait": true });
})();
{ "start": "start http://localhost:8000 & npm run dev", }
只需使用上述脚本,它对我有效。首先它会在浏览器中打开 URL,然后启动服务器。问题是首次访问 URL 会报错,然后运行服务器后页面将自动重新加载。
如果您不需要使用任何外部软件包,那么这更好。
最简单的方法是安装open
软件包
npm i open --save-dev
然后在 package.json 的 script 对象中像这样使用它
{
"name": "somename",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"open-my-html": "open path/to/your/index.html",
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies: {
"open": "^7.3.0"
},
"author": "",
"license": "ISC"
}
然后运行
npm run open-my-html
fs.mkdtemp
可能对您有用。 - cbrsh
。因此,您可以在 npm 脚本中使用内置的open
实用程序。例如,您可以在 package.json 的scripts
部分中定义以下 npm-script:"quux": "open -a \"Safari\" ./path/to/index.html"
- 然后运行npm run quux
- 注意:您可以将上述 npm 脚本中的 "Safari" 部分更改为其他首选浏览器,例如 Google Chrome 等。还要确保根据需要重新定义/path/to/index.html
部分。对于跨平台解决方案,您需要使用 node.js。 - RobC