我用这个yeoman react webpack generator创建了一个玩具应用程序,我想用shell脚本简化部署过程。
package.json的片段看起来像这样......
"scripts": {
"clean": "rimraf dist/*",
"copy": "copyfiles -f ./src/index.html ./src/favicon.ico ./dist",
"dist": "npm run copy & webpack --env=dist",
有了这个,我当前的流程是提交更改(使用git),然后是npm run clean
,然后是npm run dist
,然后再次使用发布#remit消息提交,真正推送到我的玩具生产服务器git subtree push ...
我想用脚本自动执行此操作。这是我到目前为止所做的:
首先,我添加了一个调用我的脚本来打包json ...
...
"deploy": "./deploy2server.sh",
...
在部署到服务器时,只有在有未提交的更改时才会继续,并启动我的手动过程,如下所示...
#!/bin/sh
if [[ -z $(git status -s) ]]
then
npm run clean
npm run dist
#
# My problem is here
#
# want, if no errors in my code, commit and push subtree
else
echo "must commit changes before running"
exit
fi
我的问题是我需要从webpack检测有关我的代码的错误和警告。 Webpack控制台输出看起来像这样......
Hash: e4e23433b4c1b1ab7a97
Version: webpack 1.15.0
Time: 6140ms
Asset Size Chunks Chunk Names
app.js 188 kB 0 [emitted] main
app.js.map 1.95 MB 0 [emitted] main
+ 231 hidden modules
WARNING in ./src/components/MyComponent.js
/Users/path_to_my_project/MyComponent.js
19:13 warning 'j' is defined but never used no-unused-vars
✖ 1 problem (0 errors, 1 warning)
WARNING in app.js from UglifyJs
Condition always false [./~/fbjs/lib/invariant.js:26,0]
Dropping unreachable code [./~/fbjs/lib/invariant.js:27,0]
...a gazzillion more warnings like these, unrelated to my code
我的shell脚本如何在我的代码中找出错误或警告,如果没有错误或警告
我唯一的想法是将所有输出传递给tmp文件,然后解析它寻找我关心的错误/警告,但我真的不知道如何编写这样的解析(在grep中) ?)并得到一个结果。
如果有任何帮助,我想出了如何使用node ./node_modules/webpack/bin/webpack --env=dist
直接从脚本调用webpack,但我仍然不知道如何获取输出或理解它。
答案 0 :(得分:0)
超过一天的7次观看?是否有最不受欢迎的问题的徽章?
我通过了解set -e
解决了这个问题,它告诉脚本在后面的命令中发生任何错误时退出。现在我的部署脚本如下所示:
#!/bin/sh
if [[ -z $(git status -s) ]]
then
read -p "Deployment commit message: " message
set -e
npm run clean
npm run dist
git add -A
git commit -m "$message"
git subtree push --prefix dist origin gh-pages
else
echo "must commit changes before running"
exit
fi
我将使用该部署提交消息来指示版本,或者在日志中可以轻松搜索的内容。