Skip to main content

Command Palette

Search for a command to run...

ASP.NET Core 將 NPM Package 檔案複製到 wwwroot/lib 底下

Updated
1 min read
ASP.NET Core 將 NPM Package 檔案複製到 wwwroot/lib 底下

ASP.NET Core automatic copy npm lib to wwwroot/lib

首先要說的是,在 ASP.NET Core 的專案結構底下,Nuget 已經被設為純後端的套件管理工具了,不能在像以前不論前後端都使用 Nuget 來進行套件管理

Incompatible Nuget

請使用 Bower 作為替代方案,但是很不幸的,Bower 已死? (Drop Bower supportConsider deprecating Bower),舉例來說,這次本來想安裝 Bootstrap 4.0.0-beta.2,結果不管怎麼裝都裝不起來,出現 EMALFORMED Failed to read bower.json 錯誤訊息,才查到在 Github 上面的 Issue,說明 Bootstrap 之後新版都不支援 Bower 安裝了,之後只會有越來越多的前端專案不支援 Bower

現在前端最流行的套件管理工具就是:npm,使用方法網路上都有,但是他的行為跟預設的 ASP.NET Core 行為不太一樣,導致下載或更新 package 的檔案變更並不會同步到 wwwroot/lib 底下,我個人比較習慣使用原來的方法,所以找了一下如何讓 npm 可以把檔案同步到 wwwroot/lib 方法,簡單來說:可以辦到,但是沒有直接的方法,解法是透過 Gulp 來進行檔案的操作

首先需要先安裝 npm,因為需要透過 npm 安裝 gulp

安裝完 npm 後透過命令提示字元執行以下指令

npm install --global gulp-cli

要不然到時候執行 glup 時有可能會出現: no command 'gulp' found 錯誤,因為在全域找不到 gulp

執行完畢可以輸入gulp 來確認一下安裝是否有成功

Gulp Check

接下來在專案的根目錄新增:gulpfile.js

new gulpfile.js

其中我專案有以下的 NPM Package

打開 gulpfile.js 並加入以下程式碼

其中 libs 是要複製到 wwwroot/lib 底下的 package,必須手動指定,所以當之後有新增的 package,就必須在這邊加入的 package 名稱與路徑

此指令新增了三個 Task

一個是 clean:libs,用來清除原有 wwwroot/libs 底下的檔案,避免因為有相同檔案而無法覆蓋過去的問題一個

一個是 copy:libs,用來複製指定的 package 從 node_modules 到 wwwroot/lib 底下

最後一個 copy-asset,是將上述兩個 Task 依據順序組合起來一起執行,先清除檔案再複製檔案

完成後,打開 Task Runner Explorer 視窗,可以看到列出了三個 Task,若沒有可以按左邊的重新整理按鈕即會出現

Task Runner Explorer

我們先手動確認 Task 可以正確執行,在 copy-asset 上面按右鍵並選擇執行

Run Gulp

可以看到右邊的輸出視窗會顯示結果

gulp output

確認沒問題後,可以把它設為每次建置必執行的工作步驟之一

在欲加入的 Task 上按右鍵,移到 Binding 選項上,並選擇欲加入的階段,例如說我希望在建置前就執行此項 Task,所以我就選擇 Before Build 選項

Binding Before Build

到此就設定完所有的步驟,可以在每次建置前都執行此 Task

wwwroot/lib

參考

[Building an Angular2 SPA with ASP.NET Core 1.0, MVC 6, Web API 2, and TypeScript 1.7.5 Overview The purpose of this post is to establish ourselves with a working environment geared towards development on…ievangelistblog.wordpress.com](https://ievangelistblog.wordpress.com/2016/01/13/building-an-angular2-spa-with-asp-net-5-mvc-6-web-api-2-and-typescript-1-7-5/ "https://ievangelistblog.wordpress.com/2016/01/13/building-an-angular2-spa-with-asp-net-5-mvc-6-web-api-2-and-typescript-1-7-5/")

More from this blog

Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

最近在看新的工作機會,光是瀏覽職缺、比對 JD、調整履歷就花了不少時間。 後來找到 Career-Ops 這個開源專案 作者 santifer 用這套系統篩了 740 多個職缺、產出 100 多份客製化履歷,最後拿到 Head of Applied AI 的 offer。 看起來蠻有意思的,所以我就在 Windows 上實際裝了一輪,這篇就來把整個安裝和設定的過程記錄下來。 我這邊搭配的 AI 後

Apr 12, 20265 min read
Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

讓 LLM 自動化你的 N8N 工作流程:n8n-mcp-server 安裝指南

前言 網路上一大堆都是在介紹如何在 N8N 裡面用 MCP 來呼叫其他工具,但是更多時候我希望 LLM 能直接幫我寫好或是修改 N8N 的工作流程 所以這篇就來介紹如何設定與使用 n8n-mcp-server 來讓 LLM 幫忙操控 N8N 在 GitHub 上有不少的 n8n-mcp-server,經過一下下的簡單搜索,我決定使用這個專案: n8n-mcp-server 原因在於說這個專案的實作提供了基本上所有需要編輯工作流程的功能,以下就來記錄安裝過程 MCP Server 設定 首先當然...

May 28, 20253 min read

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

.NET Core Logging- Elmah 02 上一篇我們提到了基本的使用方式,接下來的這一篇我們就來講講要怎麼把 Log 放到不同的儲存體上,以及如何過濾 Log Log 儲存方式 我們先來看這些 Log 倒底存在哪裡,目前共有三種儲存方式,如下: MemoryErrorLog — store errors in memory 預設為使用此方式,簡單來說就是將錯誤 Log 都存在記憶體裡,所以只要應用程式一重新啟動,Log 就沒了;但是也是最方便的方式,只是要注意如果 Log 太...

Oct 20, 20182 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

.NET Core Logging- Elmah 01 Elmah 是我最一開始使用的 Log 工具,基本上它的功能就是將應用程式所有發生的錯誤記錄下來,不需要改變程式架構,而且又有介面可以觀看,十分的方便;它從 WebForm 時代就有了,到了 MVC 也是運作的很好,那這邊就來介紹一下 Elmah 要如何在 ASP.NET Core 中使用 (.NET Core 也可使用)。 不過很可惜的,目前並沒有釋出官方的 Elmah for .NET Core,不過有一個新專案: ElmahCore...

Oct 19, 20181 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

Azure Data Service - Day 04 - Cognitive Service - Vision - Video Indexer 前面幾篇都是介紹靜態影像的辨識與分析,那這篇就來到針對影片來做處理。 Cognitive Service 針對影片辨識的部分提供了:Video Indexer 它整合了許多功能,在這邊列出一些比較重要的功能: 語系偵測 可以自動偵測出這個影片是屬於哪個語系,目前支援: English, Spanish, French, German, Italia...

Oct 19, 20181 min read
[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

BrainBurst, HeadFirst

45 posts

學習學到老,撞牆撞到腦. A lifelong quest—with forehead dents.