From b3993dd653d97fcb748c617157d68259eadcaaae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Mon, 16 Dec 2019 16:20:17 +0800 Subject: [PATCH] fix(cli): resolve npm mobules when compile less --- packages/vant-cli/package.json | 1 - .../vant-cli/src/compiler/compile-less.ts | 22 ++++++++++++++++--- .../vant-cli/src/compiler/compile-sass.ts | 4 ++-- packages/vant-cli/src/config/webpack.base.ts | 7 +----- packages/vant-cli/yarn.lock | 5 ----- src/icon/index.less | 2 +- src/icon/local.less | 2 +- 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index 2e62c7098..036e8d645 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -30,7 +30,6 @@ "@types/eslint": "^6.1.3", "@types/fs-extra": "^8.0.1", "@types/html-webpack-plugin": "^3.2.1", - "@types/less": "^3.0.1", "@types/lodash": "^4.14.149", "@types/postcss-load-config": "^2.0.1", "@types/sass": "^1.16.0", diff --git a/packages/vant-cli/src/compiler/compile-less.ts b/packages/vant-cli/src/compiler/compile-less.ts index 9ab6c17da..f2eec94cf 100644 --- a/packages/vant-cli/src/compiler/compile-less.ts +++ b/packages/vant-cli/src/compiler/compile-less.ts @@ -1,10 +1,26 @@ +// @ts-ignore +import { render, FileManager } from 'less'; import { readFileSync } from 'fs-extra'; -import { render as renderLess } from 'less'; + +// less plugin to resolve tilde +class TildeResolver extends FileManager { + loadFile(filename: string, ...args: any[]) { + filename = filename.replace('~', ''); + return FileManager.prototype.loadFile.apply(this, [filename, ...args]); + } +} + +const TildeResolverPlugin = { + install(lessInstance: unknown, pluginManager: any) { + pluginManager.addFileManager(new TildeResolver()); + } +}; export async function compileLess(filePath: string) { const source = readFileSync(filePath, 'utf-8'); - const { css } = await renderLess(source, { - filename: filePath + const { css } = await render(source, { + filename: filePath, + plugins: [TildeResolverPlugin] }); return css; diff --git a/packages/vant-cli/src/compiler/compile-sass.ts b/packages/vant-cli/src/compiler/compile-sass.ts index c877fee8f..b5fa2beeb 100644 --- a/packages/vant-cli/src/compiler/compile-sass.ts +++ b/packages/vant-cli/src/compiler/compile-sass.ts @@ -1,6 +1,6 @@ -import { renderSync as renderSass } from 'sass'; +import { renderSync } from 'sass'; export async function compileSass(filePath: string) { - const { css } = renderSass({ file: filePath }); + const { css } = renderSync({ file: filePath }); return css; } diff --git a/packages/vant-cli/src/config/webpack.base.ts b/packages/vant-cli/src/config/webpack.base.ts index 5af5cc62b..339ffc9ae 100644 --- a/packages/vant-cli/src/config/webpack.base.ts +++ b/packages/vant-cli/src/config/webpack.base.ts @@ -1,10 +1,8 @@ // @ts-ignore import FriendlyErrorsPlugin from '@nuxt/friendly-errors-webpack-plugin'; import sass from 'sass'; -import { resolve } from 'path'; import { VueLoaderPlugin } from 'vue-loader'; import { - ROOT, STYLE_EXTS, SCRIPT_EXTS, POSTCSS_CONFIG_FILE @@ -61,10 +59,7 @@ export const baseConfig = { use: [ ...CSS_LOADERS, { - loader: 'less-loader', - options: { - paths: [resolve(ROOT, 'node_modules')] - } + loader: 'less-loader' } ] }, diff --git a/packages/vant-cli/yarn.lock b/packages/vant-cli/yarn.lock index b2766863f..19e13c382 100644 --- a/packages/vant-cli/yarn.lock +++ b/packages/vant-cli/yarn.lock @@ -1386,11 +1386,6 @@ resolved "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636" integrity sha1-vf1p1h5GTcyBslFZwnDXWnPBpjY= -"@types/less@^3.0.1": - version "3.0.1" - resolved "https://registry.npm.taobao.org/@types/less/download/@types/less-3.0.1.tgz#625694093c72f8356c4042754e222407e50d6b08" - integrity sha1-YlaUCTxy+DVsQEJ1TiIkB+UNawg= - "@types/lodash@^4.14.149": version "4.14.149" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440" diff --git a/src/icon/index.less b/src/icon/index.less index d5ba71728..71e752afa 100644 --- a/src/icon/index.less +++ b/src/icon/index.less @@ -1,5 +1,5 @@ @import '../style/var'; -@import '@vant/icons/src/index.less'; +@import '~@vant/icons/src/index.less'; .van-icon { &__image { diff --git a/src/icon/local.less b/src/icon/local.less index 22d07dda6..8232ecf08 100644 --- a/src/icon/local.less +++ b/src/icon/local.less @@ -1 +1 @@ -@import '@vant/icons/src/encode.less'; +@import '~@vant/icons/src/encode.less';