webpack(^2.6.1)
webpack-dev-server(^2.4.5)
vue(^2.3.3 )
vuex(^2.3.1)
vue-router(^2.5.3)
vue-loader(^12.2.1)
eslint(^3.19.0)
vue.js
vuex
vue-router
vue-loader
webpack2
eslint
公式の Scaffolding vue ですが、特に webpack2 チュートリアルが非常に多くの内容があります。 cli はかなり完成度が高いですが、修正にはまだ時間がかかったので、インターネット上の情報と以前のプロジェクトで使用した構築ツールに基づいて、簡単な Vue プロジェクトのスキャフォールディングを作成しました。マルチページ スパ モード (各モジュールがスパ) のビジネス シナリオに適しています。これは比較的単純です。主に webpack.config.js ファイルです。webpack.dev.config.js、webpack.prov.config.js などのコンポーネントに特別に分割されているわけではありません。以下は、webpack.config.js ファイルのコード全体です。
1 |
|
前のプロジェクトの webpack.config.js は次のようにオブジェクトの形式でエクスポートされました
1 |
|
そして今、次のように関数になりました:
1 2 |
|
この場合、関数は webpack を実行します CLI 中に webpack のパラメーターを取得し、オプションを通じて関数に渡します。 package.json を見てください:
1 |
|
local
コマンドの場合、次のコマンドを実行します。 dev
コマンドですが、最後に --config=local
という構成があるため、process.env.npm_config_config、<code>dev
コマンドの場合、--env XXX
の場合、option.config
= 'dev の値を取得できます。 ' および function 内の option.dev
= true 、特に便利です。このようにして、パラメータを同期して、さまざまな構成ファイルをロードできます。 -d
と -p
についてよくわからない場合は、ここで確認してください。非常に詳しく説明されています。 local
命令,我们执行的是dev
命令,但是在最后面会--config=local
,这是配置,这样我们可以通过process.env.npm_config_config
获取到,而对于dev
命令,对于--env XXX
,我们便可以在function获取option.config
= 'dev' 和 option.dev
= true的值,特别方便!以此便可以同步参数来加载不同的配置文件了。对于-d
、-p
不清楚的话,可以这里查看,很详细!
1 |
|
将入口文件和模板文件放到modules目录(名字保持一致),webpack文件会通过glob读取modules目录,遍历生成入口文件对象和模板文件数组,如下:
1 2 3 4 5 6 |
|
对于HtmlWebpackPlugin插件中几个配置项的意思是,template:模板路径,filename:文件名称,这里为了区分开来模板文件我是放置在dist/modules文件夹中,而对应的编译打包好的js、img(对于图片我们是使用file-loader、url-loader进行抽离,对于这两个不是很理解的,可以看这里)、css我也是会放在dist/下对应目录的,这样目录会比较清晰。chunks:指定插入文件中的chunk,后面我们会生成manifest文件、公共vendor、以及对应生成的jscss(名称一样)
开发环境,不需要把css进行抽离,要以style插入html文件中,可以很好实现热替换 生产环境,需要把css进行抽离合并,如下(根据options.dev区分开发和生产):
1 2 3 4 5 6 7 8 9 10 11 12 |
|
再使用ExtractTextPlugin合并抽离到static/css/
目录
cli命令行(webpack -p
)使用process.env.NODE_ENV不如期望效果,使用不了,所以需要使用DefinePlugin插件定义,定义形式'"development"'或JSON.stringify(process.env.NODE_ENV),我使用这样的写法'development',结果报错(针对webpack2),查找了一下网上资料,它是这样讲的,可以去看一下,设置如下:
1 2 3 4 |
|
通过eslint来检查代码的规范性,通过定义一套配置项,来规范代码,这样多人协作,写出来的代码也会比较优雅,不好的地方是,就是配置项太多,有些默认项设置我们不需要,但是确是处处限制我们,需要通过配置屏蔽掉,可以通过.eslintrc
文件或是package.json的eslintConfig
1 2 3 4 |
|
1 2 |
|
1 2 3 |
|
static/css/
ディレクトリに抽出します 🎜🎜4. グローバル定数を定義します 🎜🎜cli コマンドライン ( webpack -p
) process.env.NODE_ENV を使用しても期待した効果が得られないため、定義形式は「開発」または JSON である DefinePlugin プラグイン定義を使用する必要があります。 stringify(process.env.NODE_ENV) このように「開発」メソッドを使用すると、結果はエラーになります(webpack2の場合)。これを見てください。設定は以下の通りです: 🎜🎜1 2 3 |
|
を使用することができます。 .eslintrc
ファイルまたは package.json の eslintConfig
を使用する方法もあります。ここでは次のように package.json メソッドを使用します。 🎜我们还需要安装 npm install eslint eslint-config-enough eslint-loader --save-dev
,eslint-config-enough是所谓的配置文件,这样package.json的内容才能起效,但是不当当是这样,对应编辑器也需要安装对应的插件,sublime text 3需要安装SublimeLinter、SublimeLinter-contrib-eslint插件。对于所有规则的详解,可以去看官网,也可以去这里看,很详细!
由于我们使用的是vue-loader,自然我们是希望能对.vue文件eslint,那么需要安装eslint-plugin-html,在package.json中进行配置。然后对应webpack配置:
1 2 |
|
我们会发现webpack v1和v2之间会有一些不同,比如webpack1对于预先加载器处理的执行是这样的,
1 2 3 |
|
更多的不同可以到中文网看,很详细,不做拓展。
1 2 3 |
|
Vue 最早会打包生成三个文件,一个是 runtime only 的文件 vue.common.js,一个是 compiler only 的文件 compiler.js,一个是 runtime + compiler 的文件 vue.js。vue.js = vue.common.js + compiler.js,默认package.json的main是指向vue.common.js,而template 属性的使用一定要用compiler.js,因此需要在alias改变vue指向
之前的项目中使用的是用express启动http服务,webpack-dev-middleware+webpack-hot-middleware,这里会用到compiler+compilation,这个是webpack的编译器和编译过程的一些知识,也不是很懂,后续要去做做功课,应该可以加深对webpack运行机制的理解。这样做的话,感觉复杂很多,对于webpack2.0 devServer似乎功能更强大更加完善了,所以直接使用就可以了。如下:
1 2 3 4 5 6 7 |
|
webpack 2 打包实战讲解得非常好,非常棒。可以去看一下,一定会有所收获!
webpack中文网,讲的还算清楚,不过可能太笨,看起来还是云里雾里的,似懂非懂的,补补课,好好看看。
Localtunnel 是一个可以让内网服务器暴露到公网上的开源项目,使用可以看这里,
1 |
|
这样的话,可以把我们的本地网站暂时性地暴露到公网,可以对网站做一些线上线下对比,详细内容可以去了解一下localtunnel,这里讲的是通过上面配置,访问https://uhhzexcifv.localtunnel.me
,没有达到理想效果,出现了Invalid Host header
的错误,因为devServer缺少一个配置disableHostCheck: true
,这样的一个配置,很多文档上面都没有说明,字面上面的意思不要去检查Host
,这样设置,便可以绕过这一层检验,设置的配置项在optionsSchema.json中,issue可以看这里
文章内容可能会更新,可以关注github
以上がVue プロジェクトのスキャフォールディングの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。