Svelte3 から Svelte4 にバージョンを上げたらというか、
全体的にバージョンを上げたので、ビルド環境含めのエラーに対しての対応。
環境
旧 package.json 抜粋
"devDependencies": {
"@babel/plugin-proposal-private-methods": "^7.17.12",
"@babel/preset-env": "^7.18.2",
"babel-loader": "^8.2.5",
"css-loader": "^5.2.1",
"json-loader": "^0.5.7",
"mini-css-extract-plugin": "^1.4.1",
"node-sass": "^5.0.0",
"sass-loader": "^10.1.1",
"style-loader": "^2.0.0",
"svelte": "^3.37.0",
"svelte-loader": "^3.1.0",
"svelte-preprocess": "^4.7.0",
"webpack": "^5.31.2",
"webpack-cli": "^4.6.0"
}
新 package.json 抜粋
- 全パッケージ最新バージョンに変更
- @babel/plugin-proposal-private-methods 削除
- @babel/plugin-transform-private-methods 追加
- sass 追加
"devDependencies": {
"@babel/plugin-transform-private-methods": "^7.24.7",
"@babel/preset-env": "^7.24.7",
"babel-loader": "^9.1.3",
"css-loader": "^7.1.2",
"json-loader": "^0.5.7",
"mini-css-extract-plugin": "^1.4.1",
"node-sass": "^9.0.0",
"sass": "^1.77.7",
"sass-loader": "^14.2.1",
"style-loader": "^4.0.0",
"svelte": "^4.2.18",
"svelte-loader": "^3.2.3",
"svelte-preprocess": "^6.0.2",
"webpack": "^5.92.1",
"webpack-cli": "^5.1.4"
}
エラーの対応
ビルドできなくなった
$ webpack --mode=production
Module not found: Error: Can't resolve 'svelte/internal'
下記、変更点。
svelte: path.dirname(require.resolve('svelte/package.json'))
↓
svelte: path.resolve('node_modules', 'svelte/src/runtime')
webpack.config.js 抜粋
module.exports = {
entry: './main.js',
resolve: {
alias: {
svelte: path.resolve('node_modules', 'svelte/src/runtime'),
},
},
}
Svelte ファイル内で sass が使えなくなった
$ webpack --mode=production
Module build failed (from ./node_modules/svelte-loader/index.js):
Error: Cannot find module 'sass'
Svelte4 から sass が必要になった。
$ npm install sass --save-dev