摘要:今天有開(kāi)發(fā)的同事問(wèn)我說(shuō),在本機(jī)開(kāi)發(fā)的上運(yùn)行構(gòu)建命令報(bào)錯(cuò),不知道怎么回事兒。比如我們直接在命令行下執(zhí)行都是沒(méi)問(wèn)題的,但結(jié)合到上,卻運(yùn)行失敗。
今天有開(kāi)發(fā)的同事問(wèn)我說(shuō),在本機(jī)開(kāi)發(fā)的 windows 上運(yùn)行構(gòu)建命令報(bào)錯(cuò),不知道怎么回事兒。
作為一名 Mac 用戶,當(dāng)然也不知道為什么啦,過(guò)去看看,果然有錯(cuò)誤。
我們的開(kāi)發(fā)構(gòu)建命令是基于 npm 的 scripts,其實(shí)就是很簡(jiǎn)單的一句話:
{ "scripts": { ... "build": "NODE_ENV=production webpack --progress --hide-modules" }, ... }
這個(gè)命令在 Mac 下沒(méi)有問(wèn)題,在 windows 下運(yùn)行卻報(bào)如下錯(cuò)誤:
0 info it worked if it ends with ok 1 verbose cli [ "C:Program Files odejs ode.exe", 1 verbose cli "C:Program Files odejs ode_modules pmin pm-cli.js", 1 verbose cli "run", 1 verbose cli "build" ] 2 info using npm@3.10.8 3 info using node@v6.9.1 4 verbose run-script [ "prebuild", "build", "postbuild" ] 5 info lifecycle @~prebuild: @ 6 silly lifecycle @~prebuild: no script for prebuild, continuing 7 info lifecycle @~build: @ 8 verbose lifecycle @~build: unsafe-perm in lifecycle true 9 verbose lifecycle @~build: PATH: C:Program Files odejs ode_modules pmin ode-gyp-bin;ode_modules.bin;C:Users in;F:Gitmingw64in;F:Gitusrlocalin;F:Gitusrin;F:Gitusrin;F:Gitmingw64in;F:Gitusrin;C:Users in;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program Files (x86)NVIDIA CorporationPhysXCommon;C:Program Files odejs;C:Goin;C:Users AppDataLocalMicrosoftWindowsApps;C:Users AppDataRoaming pm;F:Gitusrinvendor_perl;F:Gitusrincore_perl 10 verbose lifecycle @~build: CWD: 11 silly lifecycle @~build: Args: [ "/d /s /c", 11 silly lifecycle "NODE_ENV=production webpack --progress --hide-modules" ] 12 silly lifecycle @~build: Returned: code: 1 signal: null 13 info lifecycle @~build: Failed to exec build script 14 verbose stack Error: @ build: `NODE_ENV=production webpack --progress --hide-modules` 14 verbose stack Exit status 1 14 verbose stack at EventEmitter. (C:Program Files odejs ode_modules pmlibutilslifecycle.js:255:16) 14 verbose stack at emitTwo (events.js:106:13) 14 verbose stack at EventEmitter.emit (events.js:191:7) 14 verbose stack at ChildProcess. (C:Program Files odejs ode_modules pmlibutilsspawn.js:40:14) 14 verbose stack at emitTwo (events.js:106:13) 14 verbose stack at ChildProcess.emit (events.js:191:7) 14 verbose stack at maybeClose (internal/child_process.js:877:16) 14 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5) 15 verbose pkgid @ 16 verbose cwd 17 error Windows_NT 10.0.14393 18 error argv "C:Program Files odejs ode.exe" "C:Program Files odejs ode_modules pmin pm-cli.js" "run" "build" 19 error node v6.9.1 20 error npm v3.10.8 21 error code ELIFECYCLE 22 error @ build: `NODE_ENV=production webpack --progress --hide-modules` 22 error Exit status 1 23 error Failed at the @ build script "NODE_ENV=production webpack --progress --hide-modules". 23 error Make sure you have the latest version of node.js and npm installed. 23 error If you do, this is most likely a problem with the package, 23 error not with npm itself. 23 error Tell the author that this fails on your system: 23 error NODE_ENV=production webpack --progress --hide-modules 23 error You can get information on how to open an issue for this project with: 23 error npm bugs 23 error Or if that isn"t available, you can get their info via: 23 error npm owner ls 23 error There is likely additional logging output above. 24 verbose exit [ 1, true ]
調(diào)試了一下,問(wèn)題就出在這個(gè)命令本身。
這位同學(xué)開(kāi)發(fā)用的是 git-shell 自帶的命令行,本身是支持 linux 命令執(zhí)行的。
比如我們直接在命令行下執(zhí)行:
NODE_ENV=production export NODE_ENV=production
都是沒(méi)問(wèn)題的,但結(jié)合到 npm scripts 上,卻運(yùn)行失敗。
當(dāng)我們?nèi)サ暨@個(gè) env 設(shè)定,再次執(zhí)行 npm scripts 命令:
{ "scripts": { ... "build": "webpack --progress --hide-modules" }, ... }
就會(huì)發(fā)現(xiàn)沒(méi)問(wèn)題了,但結(jié)果當(dāng)然是不是我們想要的。
怎么辦?
可以把要執(zhí)行的代碼寫(xiě)到獨(dú)立的 JS 中,使用 node 命令來(lái)運(yùn)行,比如:
{ "scripts": { ... "build": "node build/build.js" }, ... }
在 build/build.js 文件中,再設(shè)定執(zhí)行環(huán)境之類的:
var ora = require("ora") var webpack = require("webpack") var webpackConfig = require("../webpack.config.js") process.env.NODE_ENV = "production" var spinner = ora("building for production...") spinner.start() webpack(webpackConfig, function (err, stats) { spinner.stop() if (err) throw err process.stdout.write(stats.toString({ colors: true, modules: false, children: false, chunks: false, chunkModules: false }) + " ") })
這其實(shí)也是 vue 腳手架自動(dòng)生成的構(gòu)建方式,果然還是最佳實(shí)踐靠譜一點(diǎn)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/91269.html
摘要:原文地址如果您對(duì)本系列文章感興趣,歡迎關(guān)注訂閱這里前言本文介紹如何在多項(xiàng)目間共用同一套基礎(chǔ)設(shè)施,又或是某種層次的框架。而以上所述的種種,就構(gòu)成了一套完整的解決方案,也稱基礎(chǔ)設(shè)施。下面就以從到的改造過(guò)程來(lái)介紹如何實(shí)現(xiàn)多項(xiàng)目共用基礎(chǔ)設(shè)施。 本文首發(fā)于Array_Huang的技術(shù)博客——實(shí)用至上,非經(jīng)作者同意,請(qǐng)勿轉(zhuǎn)載。原文地址:https://segmentfault.com/a/1190...
摘要:使用發(fā)布將項(xiàng)目打包后部署到上是常見(jiàn)需求。需要使用到的庫(kù)。關(guān)于的知識(shí),參考使用指南用打造超溜的前端工作流需付費(fèi)修改此時(shí),雖然可以發(fā)布,但所有相關(guān)的靜態(tài)文件的目錄都是指向的,而實(shí)際的靜態(tài)文件的位置是在中。 使用npm-scripts發(fā)布Github Pages 將項(xiàng)目打包后部署到GitHub Pages 上是常見(jiàn)需求。這里總結(jié)下通過(guò)npm-srcrips將項(xiàng)目發(fā)布到gh-pages分支。需...
摘要:提供非常方便的功能,讓我們?cè)诿钚屑纯蓤?zhí)行如等預(yù)定義的命令。所以我開(kāi)源了庫(kù),讓你在命令行即可方便的管理,通過(guò)即可安裝提供個(gè)命令列出當(dāng)前的命令在中設(shè)置一個(gè)命令刪除中對(duì)應(yīng)的命令 npm 提供非常方便的 npm-scripts 功能,讓我們?cè)诿钚屑纯蓤?zhí)行如 npm start 等預(yù)定義的命令。但是定義命令卻稍顯麻煩,需要打開(kāi) package.json 文件,找到 scripts 字段,增加...
摘要:實(shí)現(xiàn)一個(gè)命令完成打包同步上傳服務(wù)器說(shuō)明由于我們用的七牛云存儲(chǔ),所以也是走的七牛,所以并不適用于其他的,但是思路可以借鑒打包打包目前我這邊用的是,網(wǎng)上已經(jīng)有很多文章了,這里就不作過(guò)多闡述了,只是說(shuō)一下這個(gè)參數(shù),如果要做同步肯定是要配置這個(gè)參 webpack+gulp+qshell+npm-scripts實(shí)現(xiàn)一個(gè)命令完成[打包+同步cdn+上傳服務(wù)器] 說(shuō)明 由于我們用的七牛云存儲(chǔ),所以c...
閱讀 2650·2023-04-26 00:42
閱讀 2799·2021-09-24 10:34
閱讀 3810·2021-09-24 09:48
閱讀 4144·2021-09-03 10:28
閱讀 2576·2019-08-30 15:56
閱讀 2770·2019-08-30 15:55
閱讀 3253·2019-08-29 12:46
閱讀 2243·2019-08-28 17:52