
如何快速入門VUE3.0:進入學習
最近寫nodejs腳本較多,遇到一個問題。修改了package.json 的type: "module" 後,部分工具無法正常使用(eg postcss-cli)。
本文主要是記錄下解決在esmodule模式下,如何使用commonjs 模組的問題。
1、更換插件;
好像是廢話,其實不然。還是以postcss舉例,其實早已有issue跟進,但一直還沒更新過來。有看到重新實現的例如postcss-es-modules(下載量不高,暫時沒去試過)。
或透過vite/rollup框架本身的支援去使用外掛程式(後面再說框架本身是怎麼處理的), eg
// tailwind.config.js
export default {
purge: ['./*.html', './src/**/*.{vue,js,ts,jsx,tsx,css}'],
darkMode: false, // 或 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
// postcss.config.js
import tailwind from 'tailwindcss'
import autoprefixer 從 'autoprefixer'
import tailwindConfig from './tailwind.config.js'
export default {
plugins: [tailwind(tailwindConfig), autoprefixer],
}
// vite.config.js
css: {
postcss,
} 2、透過nodejs支援的拓展方式(type: "module"情況下),將檔案後綴改為.cjs,然後就可以透過import default from '*.cjs' 導入commonjs 模組;eg
// utils.cjs
function sum(a, b) {
return a + b
}
module.exports = {
sum
}
// index.js
import utils from './utils.js'
console.log(utils.sum(1, 2)) 3、透過package.json的exports 欄位分別標誌不同模組的入口檔案(這也是大部分三方函式庫常用做法);eg
// package.json
"exports": {
"import": "./index.js",
"require": "./index.cjs"
}1、nodejs分別是怎麼處理.mjs/.cjs後綴檔的?
nodejs總是以esmodule 模組載入.mjs文件,以commonjs 載入.cjs 檔案。當package.json設定了type: "module" 時,總是以esmodule 載入.js檔。