簡體   English   中英

如何使用gulp從以下配置自動化構建

[英]How to automate the build from the following configuration using gulp

背景

我有一個環回和Angular應用程序,Loopback使用服務器模型和api,並使用它的sdk我們能夠獲得客戶端服務。

現在我計划使用gulp自動執行以下構建過程。 如果模型中有任何更改,則運行sdk命令並重新啟動服務器/其次,當角度文件發生任何更改時,運行sdk文件並從angular dist文件夾中取出文件並重新啟動服務器並且最好我們可以使用瀏覽器的實時重新加載。

這是我嘗試過的,這似乎從來沒有工作過幾天。

更新

我能夠將失敗的地方的大多數東西自動化

gulp.task('browser-sync', function() {
  browserSync.init(null, {
    proxy: 'http://localhost:3000/home',
    browser: 'google chrome',
    port: 7000,
  });
  gulp.watch(['client/src/app/*.ts'], browserSync.reload);
  let watcher = gulp.watch(['./common/models/**.js', './server/**.js', 'gulpfile.js'], ['sdk', 'server']);
  watcher.on('change', function(event) {
    console.log('File ' + event.path + ' was ' + event.type + ', running tasks...'); // this watcher
  });
});

gulp.task('sdk', function() {
  spawn('./node_modules/.bin/lb-sdk', ['server/server.js', './client/src/app/shared/sdk', '-q'], {stdio: 'inherit'});
});

這個觀察者重新啟動服務器並運行sdk但它在sdk中失敗了

堆棧跟蹤請幫忙

via remoting. The Angular code for this scope won't be generated.
[19:29:37] Starting 'sdk'...
[19:29:37] Finished 'sdk' after 11 ms
[19:29:37] Starting 'server'...
[19:29:37] Finished 'server' after 17 ms
events.js:163
      throw er; // Unhandled 'error' event
      ^

Error: spawn ./node_modules/.bin/lb-sdk ENOENT
    at exports._errnoException (util.js:1050:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
    at onErrorNT (internal/child_process.js:367:16)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)

更新

我有多個gulp任務,其中一個是ng build -w ,它發生在同一個新目錄中我改變了process.chdir來改變路徑,我也保留了這個sdk的標簽,所以我需要再次檢查她的路徑。 我如何在我的產卵中檢查或給出絕對路徑。 如果這是失敗的可能原因之一

考慮到您的更新

可能發生的事情是,一旦使用process.chdir更改目錄以執行單獨的任務,並且您一直在監視所有任務。 路徑設置為上一個路徑,gulp任務無法找到sdk i:e spawn('./node_modules/.bin/lb-sdk', ['server/server.js', './client/src/app/shared/sdk', '-q'], {stdio: 'inherit'}); 在那條路上。

要解決此問題,您可以在sdk task添加以下檢查

gulp.task('sdk', function() {
  if (process.cwd() != __dirname) { // this checks for the current path 
    process.chdir(<change path>); // if it dosent match your base path change it here
  }
  spawn('./node_modules/.bin/lb-sdk', ['server/server.js', './client/src/app/shared/sdk', '-q'], {stdio: 'inherit'});
});
  1. 你確定你已經運行了npm install --save-dev @mean-expert/loopback-sdk-builder嗎?
  2. 你確定gulpfile.jspackage.json在同一個目錄中嗎?
  3. 你確定./node_modules/.bin/lb-sdk存在嗎?
  4. 你試過重新安裝一切嗎?

錯誤的答案只是你的spawn函數找不到./node_modules/.bin/lb-sdk 這可能是因為該文件不存在,或者因為它無法相對於您的gulpfile.js找到

控制台中的ENOENT錯誤表示“錯誤:無實體”。 它來自UNIX,而不是Node本身,基本上只是轉換為“找不到文件”,但適用於各種通用的東西,而不僅僅是文件/目錄。

檢查文件./node_modules/.bin/lb-sdk確實存在。 然后檢查您的gulpfile是否位於相對於該目錄的根目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM