雖然這東西沒什麼技術含量,不過流程也是要自己跑過一遍才會有記憶點,如果只看過沒跑過很快就忘
現代的Javascript Develop實在麻煩,需要很多工具配合使用
先決條件
沒什麼好講的
1  | $ mkdir modern_javascript_library && cd modern_javascript_library  | 
Typescript
身為不專業的C++開發者,我比較能接受Typescript,所以就用上了
1  | $ npm install typescript --save-dev  | 
接著編寫tsconfig.json,依需求自行修改
1  | {  | 
可以看到我們的進入點是src/main.ts
接著就開始寫src/main.ts了
1  | import print from './print'  | 
看到我們import了print,所以要補上這個檔案
1  | function print()  | 
接著編譯它
1  | $ npx tsc  | 
驗證結果
1  | $ node lib/src/main.js  | 
第一階段完成,我們可以看到產生了main.js和print.js兩個檔案,接著我們要打包在一起了
Rollup
Rollup是個打包工具,跟Webpack比起來更適合打包Library,在這個地方我們使用它
1  | $ npm install rollup @rollup/plugin-typescript --save-dev  | 
編寫rollup.config.js
1  | import typescript from '@rollup/plugin-typescript';  | 
執行它
1  | $ npx rollup -c  | 
可以看到產生了output/main.js一個檔案而已
1  | $ node output/main.js  | 
結果正確
ESLint
ESLint也是現代JS開發不可或缺的玩意,一併用上
1  | $ npm install eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev  | 
編寫.eslintrc.js
1  | module.exports = {  | 
修改package.json,新增lint Rule
1  | "scripts": {  | 
接著跑一次看看
1  | $ npm run lint  | 
因為程式碼不複雜,自然也不會有什麼問題產生
Prettier
對Javascript Code做Formatter的工具,類似clang-format或是gofmt,少不了又要配置一堆東西
1  | $ npm install prettier eslint-config-prettier eslint-plugin-prettier --save-dev  | 
新增.prettierrc.js
1  | module.exports = {  | 
修改上一步驟的.eslintrc.js
1  | module.exports = {  | 
同上一步,執行
1  | $ npm run lint  | 
如果沒有錯誤的話,ts檔案會auto formatter
Conclusion
這東西做個一次可能還很新鮮,重複幾次下來就會煩躁
因此一堆人開發了Scaffold來做這件事,畢竟我不是專業JS開發者,淺嘗則止
哪天轉職之後再來看也不遲,不過由於Javascript太弱了,才需要一堆工具,真是麻煩