将现有的Phoenix应用程序从Brunch切换到Webpack

88 阅读1分钟

将现有的Phoenix应用程序从Brunch切换到Webpack

Phoenix 1.4版本以后将使用webpack作为javascript的模块捆绑器。这篇博文介绍了我在现有的Phoenix项目中从Brunch切换到Webpack的步骤。

克隆Phoenix

由于Phoenix 1.4在本博客发表时尚未发布,我们将使用Phoenix源码安装程序生成一个新项目。克隆Phoenix并运行 -

cd phoenix/installer
mix phx.new dev_app --dev

dev_app/assets 文件夹中运行npm install

将这个assets 文件夹复制到现有的Phoenix项目文件夹中,我们要将其从brunch切换到webpack。

删除brunch配置

删除brunch-config.js,package-lock.json &node_modules 文件夹。从现有的package.json 文件中复制所需的依赖关系到assets文件夹中的package.json 文件,但与brunch有关的依赖关系如brunch,babel-brunch 等除外。删除根目录下的package.json。

在将依赖项添加到新的package.json文件后,运行npm install

从静态文件夹中复制js和css文件

将js和css文件从web/static 文件夹复制到assets/js &assets/css 文件夹并删除web/static 文件夹。

删除用于启动程序的默认样式

删除assets/css/phoenix.css 及其中的条目assets/css/app.css

更新npm观察脚本

assets/package.json 中的npm观察脚本更新为:

"watch": "webpack --mode development --watch-stdin"

使用--watch-stdin 选项在stdin(标准输入)关闭时退出nodejs进程。

更新webpack watcher配置

config/dev.exs 中的 webpack watcher 配置更新为:

watchers: [node: ["node_modules/webpack/bin/webpack.js", "--mode", "development", "--watch-stdin",
  cd: Path.expand("../assets", __DIR__)]]

添加到.gitignore

assets 下添加node_modules.gitignore

/assets/node_modules

更新babel预设

更新项目中需要的babel预置:

{
  "presets": [
    "env",
  ]
}

启动Phoenix并检查webpack

用-启动Phoenix,并检查webpack是否已经构建了js包:

iex -S mix phx.server

并检查webpack是否已经构建了js bundle。