142 lines
3.4 KiB
TypeScript
142 lines
3.4 KiB
TypeScript
// @ts-nocheck
|
||
import Components from 'unplugin-vue-components/webpack';
|
||
import NutUIResolver from '@nutui/nutui-taro/dist/resolver';
|
||
import {UnifiedWebpackPluginV5} from 'weapp-tailwindcss/webpack';
|
||
import {join} from 'node:path';
|
||
import {argv} from 'yargs';
|
||
|
||
const {robot = 1, desc} = argv;
|
||
|
||
const CIPluginOptFn = async () => {
|
||
/**
|
||
* @typedef { import("@tarojs/plugin-mini-ci").CIOptions } CIOptions
|
||
* @type {CIOptions}
|
||
*/
|
||
return {
|
||
weapp: {
|
||
appid: process.env.TARO_APP_ID,
|
||
privateKeyPath: process.env.TARO_APP_KEY,
|
||
robot,
|
||
},
|
||
desc,
|
||
};
|
||
};
|
||
|
||
const config = {
|
||
projectName: 'taroApp',
|
||
date: '2023-8-13',
|
||
designWidth(input: {file: string}) {
|
||
if (input?.file?.replace(/\\+/g, '/').indexOf('@nutui') > -1) {
|
||
return 375;
|
||
}
|
||
return 750;
|
||
},
|
||
deviceRatio: {
|
||
640: 2.34 / 2,
|
||
750: 1,
|
||
828: 1.81 / 2,
|
||
375: 2,
|
||
},
|
||
sourceRoot: 'src',
|
||
outputRoot: 'dist',
|
||
plugins: ['@tarojs/plugin-html', ['@tarojs/plugin-mini-ci', CIPluginOptFn]],
|
||
defineConstants: {},
|
||
copy: {
|
||
patterns: [],
|
||
options: {},
|
||
},
|
||
framework: 'vue3',
|
||
compiler: {
|
||
type: 'webpack5',
|
||
prebundle: {enable: false},
|
||
},
|
||
cache: {
|
||
enable: false, // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache
|
||
},
|
||
sass: {
|
||
data: `@import "@nutui/nutui-taro/dist/styles/variables.scss";`,
|
||
},
|
||
alias: {
|
||
'@': join(__dirname, '..', 'src'),
|
||
},
|
||
mini: {
|
||
webpackChain(chain) {
|
||
chain.merge({
|
||
plugin: {
|
||
install: {
|
||
plugin: UnifiedWebpackPluginV5,
|
||
args: [
|
||
{
|
||
appType: 'taro',
|
||
},
|
||
],
|
||
},
|
||
},
|
||
});
|
||
chain.plugin('unplugin-vue-components').use(
|
||
Components({
|
||
resolvers: [NutUIResolver({taro: true})],
|
||
}),
|
||
);
|
||
},
|
||
miniCssExtractPluginOption: {
|
||
//忽略css文件引入顺序
|
||
ignoreOrder: true,
|
||
},
|
||
postcss: {
|
||
pxtransform: {
|
||
enable: true,
|
||
config: {
|
||
// selectorBlackList: ['nut-']
|
||
removeCursorStyle: false,
|
||
},
|
||
},
|
||
url: {
|
||
enable: true,
|
||
config: {
|
||
limit: 1024, // 设定转换尺寸上限
|
||
},
|
||
},
|
||
cssModules: {
|
||
enable: true, // 默认为 false,如需使用 css modules 功能,则设为 true
|
||
config: {
|
||
namingPattern: 'module', // 转换模式,取值为 global/module
|
||
generateScopedName: '[name]__[local]___[hash:base64:5]',
|
||
},
|
||
},
|
||
},
|
||
},
|
||
h5: {
|
||
webpackChain(chain) {
|
||
chain.plugin('unplugin-vue-components').use(
|
||
Components({
|
||
resolvers: [NutUIResolver({taro: true})],
|
||
}),
|
||
);
|
||
},
|
||
publicPath: '/',
|
||
staticDirectory: 'static',
|
||
esnextModules: ['nutui-taro', 'icons-vue-taro'],
|
||
postcss: {
|
||
autoprefixer: {
|
||
enable: true,
|
||
config: {},
|
||
},
|
||
cssModules: {
|
||
enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true
|
||
config: {
|
||
namingPattern: 'module', // 转换模式,取值为 global/module
|
||
generateScopedName: '[name]__[local]___[hash:base64:5]',
|
||
},
|
||
},
|
||
},
|
||
},
|
||
};
|
||
|
||
module.exports = function (merge) {
|
||
if (process.env.NODE_ENV === 'development') {
|
||
return merge({}, config, require('./dev'));
|
||
}
|
||
return merge({}, config, require('./prod'));
|
||
};
|