Docker+Cmd+Cli+Git之前端工程化紀要(二)自定義類package.json文件管理模組包

全新升級後的FE工作流為:使用FE命令包進行項目的初始化,其中包括項目初始化、拉取腳手架、私庫拉取模組包或後期擴展的CI/CD等與本公司工作流相關的操作。

出現的問題如下:

腳手架工具的包依賴資訊存放在根目錄的package.json中,若業務項目仍存放在package.json中,那麼後期再更新腳手架工具時,就會將業務包的依賴資訊覆蓋。因此就需要將業務的依賴資訊單獨存放。

由此配合私庫進行切源,就能滿足之前的工程化架構的需求。

應新的需求特地擼了個工具,後續也會持續優化與更新。

NPM: package-copy(包副本) 傳送門

對此工具做以下幾點說明:

1. 此工具可以在初始化時自定義文件路徑與文件名稱,並以指定文件存放依賴包資訊。

2. 可以使用指定的pkg-copy進行init、install、uninstall等操作,安裝依賴同npm相同,均為node_modules.

3. 新安裝的依賴也會添加到指定的package.json文件中

Install

npm install --save-dev package-copy

Usage

use with Command Line

./node_modules/.bin/pkg-copy config json=./package-test.json

./node_modules/.bin/pkg-copy init

./node_modules/.bin/pkg-copy init json=./package-test.json

./node_modules/.bin/pkg-copy install

./node_modules/.bin/pkg-copy install -D vue-loader

./node_modules/.bin/pkg-copy uninstall --save [email protected] react

use with js

const PkgCopy = require('package-copy');

// 如果不初始化配置項,則默認在執行目錄下生成package-copy.json

let pkg = new PkgCopy({
    json: './package-test.json'
})

pkg.exec('pkg-copy init')
pkg.exec('pkg-copy install vue -S').then((msg) => {})  // use promise
await pkg.exec('pkg-copy install vue -S')   // use async/await